(57)【特許請求の範囲】
【請求項１】
車両に搭載されるものであり、複数の演算部（１０、２０）と、複数の演算部が共通にアクセスする共有記憶部（３３、４１）と、を備えた車両用制御装置であって、
複数の前記演算部によって実行されるものであり、複数の前記演算部による前記共有記憶部への競合を抑制するための複数の排他制御を含むプログラム（３１ａ、３１ｂ）と、
各排他制御が各演算部によって実行されたか否かを示す、各排他制御に対応した複数の実行履歴を記憶している記憶部（３２）と、
各演算部は、前記排他制御を実行するものであり、複数の前記排他制御のうち複数の前記演算部で実行されたことを示す前記実行履歴が記憶された前記排他制御に関しては前記排他制御を実行し、複数の前記排他制御のうち複数の前記演算部で実行されたことを示す前記実行履歴が記憶されていない前記排他制御に関しては前記排他制御を実行せず、さらに、重複しない識別情報が割り振られており、自身が前記排他制御を実行した場合、実行した前記排他制御と、自身に割り振られた前記識別情報と、を関連付けた情報を前記実行履歴として前記記憶部に記憶することで、前記排他制御を実行した前記演算部に対応する前記実行履歴を更新する更新部を含む車両用制御装置。
【請求項２】
車両に搭載されるものであり、複数の演算部（１０、２０）と、複数の演算部が共通にアクセスする共有記憶部（３３、４１）と、を備えた車両用制御装置であって、
複数の前記演算部によって実行されるものであり、複数の前記演算部による前記共有記憶部への競合を抑制するための複数の排他制御を含むプログラム（３１ａ、３１ｂ）と、
各排他制御が各演算部によって実行されたか否かを示す、各排他制御に対応した複数の実行履歴を記憶している排他制御部（３２ａ）と、
各演算部は、重複しない識別情報が割り振られており、前記排他制御を実行するものであり、複数の前記排他制御のうち複数の前記演算部で実行されたことを示す前記実行履歴が記憶された前記排他制御に関しては前記排他制御を実行し、複数の前記排他制御のうち複数の前記演算部で実行されたことを示す前記実行履歴が記憶されていない前記排他制御に関しては前記排他制御を実行せず、
前記排他制御部は、前記排他制御を実行した前記演算部を判断し、前記演算部で実行された前記排他制御と、前記排他制御を実行した前記演算部の前記識別情報とを関連付けた情報を前記実行履歴として記憶することで、前記排他制御を実行した前記演算部に対応する前記実行履歴を更新する車両用制御装置。
【請求項３】
前記プログラムは、アプリケーションプログラムとプラットフォームプログラムとに分離されて構成されている請求項１又は２に記載の車両用制御装置。
【請求項４】
前記実行履歴は、不揮発性メモリに記憶されている請求項１乃至３のいずれか一項に記載の車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載されるものであり、複数の演算部と複数の演算部が共通にアクセスする共有データが格納された共有記憶部とを有した車両用制御装置に関する。
【背景技術】
【０００２】
従来、上記のような構成の車両用制御装置の一例として、特許文献１に開示されたものがある。
【０００３】
特許文献１には、複数の演算部と、複数の演算部が共通にアクセスする共有データが冗長に格納される共有記憶部とを備えた車両用制御装置が開示されている。この車両用制御装置は、共有記憶部へのアクセスが競合することを避けるために、データ更新処理部を実行していない演算部に対して最高優先度の割り込み信号を入力している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１７１５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、共有データを更新するたびに割り込みが発生するため、共有データが多い場合には割り込みが多発する。よって、特許文献１では、共有データを更新するための割り込みによって、他の割り込みが遅延されるという問題がある。さらに、特許文献１では、共有記憶部の通知処理などのための処理時間によっても演算部のロードが増加する。
【０００６】
本発明は、上記問題点に鑑みなされたものであり、割り込み遅延や演算部のロード増加を低減した車両用制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、
車両に搭載されるものであり、複数の演算部（１０、２０）と、複数の演算部が共通にアクセスする共有記憶部（３３、４１）と、を備えた車両用制御装置であって、
複数の演算部によって実行されるものであり、複数の演算部による共有記憶部への競合を抑制するための複数の排他制御を含むプログラム（３１ａ、３１ｂ）と、
各排他制御が各演算部によって実行されたか否かを示す、各排他制御に対応した複数の実行履歴を記憶している記憶部（３２、３２ａ）と、
各演算部は、排他制御を実行するものであり、複数の排他制御のうち複数の演算部で実行されたことを示す実行履歴が記憶された排他制御に関しては排他制御を実行し、複数の排他制御のうち複数の演算部で実行されたことを示す実行履歴が記憶されていない排他制御に関しては排他制御を実行せず、さらに、重複しない識別情報が割り振られており、自身が排他制御を実行した場合、実行した排他制御と、自身に割り振られた識別情報と、を関連付けた情報を実行履歴として記憶部に記憶することで、排他制御を実行した演算部に対応する実行履歴を更新する更新部を含むことを特徴とする。
【０００８】
このように、本発明は、各排他制御が各演算部によって実行されたか否かを示す実行履歴を記憶している記憶部を有している。よって、本発明は、複数の排他制御の夫々を実行した演算部がわかるように構成されている。そして、複数の演算部で実行された排他制御は、複数の演算部による共有記憶部への競合が発生する可能性がある。このため、各演算部は、複数の排他制御のうち複数の演算部で実行されたことを示す実行履歴が記憶された排他制御に関しては排他制御を実行する。一方、複数の演算部で実行されていない排他制御は、複数の演算部による共有記憶部への競合が発生する可能性がない。このため、各演算部は、複数の排他制御のうち複数の演算部で実行されたことを示す実行履歴が記憶されていない排他制御に関しては排他制御を実行しない。
【０００９】
よって、本発明は、複数の演算部による共有記憶部への競合が発生する可能性がない場合に排他制御が実行されることを抑制できる。従って、本発明は、必要以上に排他制御を行うことを抑制できる。なお、これによって、本発明は、演算部によるロード増加の低減が期待できる。さらに、本発明は、排他制御を実行するために割り込みを行ったとしても、割り込みによる遅延の低減が期待できる。
【００１０】
なお、特許請求の範囲、及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態における車両用制御装置の概略構成を示すブロック図である。
【図２】第１実施形態におけるプラットフォームプログラム実行時のフローチャートである。
【図３】第１実施形態におけるセマフォ獲得処理を示すフローチャートである。
【図４】第１実施形態におけるスピンロック処理を示すフローチャートである。
【図５】第１実施形態におけるセマフォ解放処理を示すフローチャートである。
【図６】第１実施形態における実行履歴を示すイメージ図である。
【図７】第１実施形態における各共有記憶部とセマフォとの関係を示すイメージ図である。
【図８】変形例１における各共有記憶部とセマフォとの関係を示すイメージ図である。
【図９】変形例２における各共有記憶部とセマフォとの関係を示すイメージ図である。
【図１０】第２実施形態における車両用制御装置の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下において、図面を参照しながら、発明を実施するための形態を説明する。
【００１３】
（第１実施形態）
本実施形態では、図１に示す車両用制御装置１００に適用した例を採用する。また、車両用制御装置１００は、車両に搭載される制御装置であり、例えばエンジン制御装置、ハイブリッド制御装置などに適用できる。本実施形態では、一例として、車両用制御装置１００をエンジン制御装置に適用した例を採用する。
【００１４】
車両用制御装置１００は、複数のセンサから検出信号を取得可能に構成されており、取得した検出信号を用いてエンジンの状態に応じた最適な燃料噴射を行うための演算を実行する。図１では、センサの一例としてクランク角センサ２１０を図示している。また、車両用制御装置１００は、各種アクチュエータが接続されている。図１では、アクチュエータの一例としてインジェクタ２２０を図示している。そして、車両用制御装置１００は、演算結果である制御信号を出力することで、インジェクタ２２０などのアクチュエータを制御する。このようにして、車両用制御装置１００は、エンジン制御を行う。
【００１５】
車両用制御装置１００は、マイコンなどを備えて構成されている。詳述すると、車両用制御装置１００は、第１コア１０、第２コア２０、第１記憶部３１、第２記憶部３２、第１共有記憶部３３、入出力回路４０などを備えて構成されている。また、車両用制御装置１００は、第１コア１０と第２コア２０、及び、第１コア１０と第２コア２０とが共通にアクセスする第１共有記憶部３３と後程説明する第２共有記憶部４１とを備えて構成されている。なお、以下においては、第１共有記憶部３３と後程説明する第２共有記憶部４１とを纏めて共有記憶部と称することもある。
【００１６】
第１コア１０は、第１ＣＰＵ１１、第１レジスタ１２、第１メモリ１３を備えて構成されている。第１メモリ１３は、第１コア１０の第１コアＩＤが記憶されている。第１コアＩＤは、第１コア１０であることを示す情報、すなわち識別情報である。ＩＤは、Identificationの略称である。
【００１７】
第２コア２０は、第１コア１０と同様に、第２ＣＰＵ２１、第２レジスタ２２、第２メモリ２３を備えて構成されている。第２コアＩＤは、第２コア２０であることを示す識別情報である。第１コアＩＤと第２コアＩＤとは、重複することなく設けられている。
【００１８】
このように、本実施形態では、複数の演算部として、第１コア１０と第２コア２０とを採用している。しかしながら、本発明は、これに限定されず、三つ以上のコアを備えていても目的を達成できる。なお、ＣＰＵは、Central Processing Unitの略称である。
【００１９】
第１コア１０と第２コア２０は、後程説明するアプリケーションプログラム及びプラットフォームプログラムを実行することで、共有記憶部に記憶された共有データにアクセスしつつ、上記のように演算や入出力回路４０を介して制御信号の出力を行う。また、第１コア１０と第２コア２０は、アプリケーションプログラム及びプラットフォームプログラムを実行することで、第２記憶部３２にアクセスする。第１コア１０と第２コア２０は、第２記憶部３２にアクセスした場合、セマフォの獲得及び解放や、コア実行履歴の更新などを行う。このように、車両用制御装置１００は、コア排他制御の一例として、セマフォを用いたコア排他制御を行う。しかしながら、本発明は、これに限定されず、ミューテックスなどの排他制御を採用できる。なお、コア排他制御は、特許請求の範囲における排他制御に相当する。
【００２０】
以下においては、第１コア１０と第２コア２０とを区別する必要がない場合、単にコアとも記載する。同様に、第１コアＩＤと第２コアＩＤとを区別する必要がない場合、単にコアＩＤとも記載する。
【００２１】
第１記憶部３１は、例えばＲＯＭを採用できる。第１記憶部３１には、第１コア１０及び第２コア２０で実行されるプログラムが記憶されている。このプログラムは、アプリケーションプログラムとプラットフォームプログラムに分離されている。つまり、第１記憶部３１には、アプリケーションプログラムやプラットフォームプログラムが記憶されている。アプリケーションプログラムは、例えば、車両状態に応じて燃料を噴射するエンジン位置や噴射量の要求値などを演算するプログラムである。プラットフォームプログラムは、例えば、アプリケーションプログラムからの要求値に基づき、要求されたエンジン位置、噴射量で燃料を噴射するように入出力回路４０を駆動するプログラムである。
【００２２】
なお、第１記憶部３１に記憶されたプログラムは、例えば、プラットフォームプログラムを車両制御装置サプライヤが開発し、アプリケーションプログラムを完成車両メーカが開発することが考えられる。また、プラットフォームプログラムの開発資産は、複数の車両システムで再利用されることが一般的である。一方、アプリケーションプログラムは、車両システムごとに異なることがありうる。このため、プラットフォームプログラムを実行するＣＰＵ割り当ては、車両システムによって異なる可能性がある。このような場合、プラットフォームプログラムは、どのようにＣＰＵ割り当てがされても、共有記憶部の競合を避けられるように、コア間の排他制御（以下、コア排他制御）が行われるようにする必要がある。
【００２３】
つまり、プラットフォームプログラムは、共有記憶部へアクセスされる全てのタイミングでコア排他制御が行われるように構成されている。言い換えると、プラットフォームプログラムは、共有記憶部へアクセスされる全ての処理に対応してコア排他制御が行われるように構成されている。また、プラットフォームプログラムは、フルにコア排他制御が設けられているとも言える。さらに、プログラムは、第１コア１０と第２コア２０による共有記憶部への競合を抑制するための複数の排他制御を含んでいると言える。しかしながら、第１コア１０と第２コア２０は、全てのタイミングで共有記憶部へアクセスするとは限らない。
【００２４】
また、第１記憶部３１には、第１コア１０及び第２コア２０で実行されるプログラムとして、複数のコア排他制御を含む第１プログラムと、第１プログラムとは異なる第２プログラムとが記憶されていると言うこともできる。
【００２５】
第２記憶部３２は、例えばＲＡＭを採用できる。第２記憶部３２には、セマフォやコア実行履歴が記憶されている。第２記憶部３２は、特許請求の範囲における記憶部に相当する。
【００２６】
セマフォは、周知のように、複数コアと共有記憶部を持つ装置におけるコア排他制御に用いられる。つまり、セマフォは、第１コア１０と第２コア２０による、第１共有記憶部３３や第２共有記憶部４１へのアクセスが競合することを避けるためのコア排他制御に用いられる。また、コア排他制御は、第１コア１０が共有データにアクセスするタイミングと、第２コア２０が共有データにアクセスするタイミングとが同時にならないことを実現するための手法とも言える。
【００２７】
セマフォは、解放中の状態と、獲得中の状態を持つ。詳述すると、セマフォは、獲得中のコアＩＤ、及び解放中を示すことができる。例えば、第２記憶部３２は、セマフォ獲得中であるかセマフォ解放中であるかを示す情報と、セマフォ獲得中であるコアのコアＩＤとを含むものである。なお、セマフォ獲得中であるかセマフォ解放中であるかを示す情報と獲得中であるコアのコアＩＤは、纏めてセマフォ情報と称することができる。よって、図１の第２記憶部３２に記載したセマフォは、セマフォ情報に相当するとも言える。
【００２８】
また、セマフォを獲得中のコアは、唯一となるように構成されている。すなわち、セマフォを獲得中のコアは、第１コア１０と第２コア２０のいずれか一方のみである。そして、コア排他制御では、セマフォを参照しながら第１共有記憶部３３や第２共有記憶部４１にアクセスすることによりコア間での排他が可能になる。例えば、第１コア１０は、セマフォを参照しながら第１共有記憶部３３にアクセスすることにより、自身がセマフォを解放するまで、第２コア２０による第１共有記憶部３３へのアクセス禁止が可能になる。
【００２９】
また、セマフォは、一つであってもよいし、複数であってもよい。図７は、セマフォが一つの場合の各共有記憶部とセマフォとの関係を示している。つまり、セマフォＸは、複数の共有記憶部の夫々に共通である。なお、本実施形態では、共有記憶部として、第１共有記憶部３３と第２共有記憶部４１のみを有した車両用制御装置１００を採用している。しかしながら、共有記憶部とセマフォとの関係の説明では、第１共有記憶部３３及び第２共有記憶部４１に加えて、第３共有記憶部を備えている場合を採用している。
【００３０】
一方、コア実行履歴は、コア排他制御を実行したプログラム、すなわちコア排他制御を実行した演算部の実行履歴を記憶する領域である。このコア実行履歴は、セマフォ獲得処理を実行した履歴と言い換えることができる。また、コア実行履歴は、各コアがセマフォ獲得処理を実行したか否かを示すデータと言い換えることもできる。さらに、コア実行履歴は、各コア排他制御が第１コア１０と第２コア２０によって実行されたか否かを示す、各排他制御に対応した実行履歴を含んでいる。
【００３１】
コア実行履歴は、図６に示すように、第１コア１０と第２コア２０の夫々における実行履歴を含んでおり、０が実行履歴なしを示しており、１が実行履歴ありを示している。図６の例では、第１コア１０が実行履歴ありで、第２コア２０が実行履歴なしを示している。なお、コア実行履歴は、セマフォと１対１の関係にある。つまり、上記のように、複数のセマフォがある場合、コア実行履歴は、複数のセマフォの夫々に対応して設けられている。また、第２記憶部３２は、複数のコア実行履歴を記憶していると言える。
【００３２】
複数のセマフォがある場合、複数の共有記憶部の夫々は、一つのセマフォが対応していることが必要である。言い換えると、複数の共有記憶部の夫々は、対応するセマフォを唯一持つようになっている。
【００３３】
例えば、図８は、セマフォが二つの場合の各共有記憶部とセマフォとの関係を示している。この場合、第１共有記憶部３３は、セマフォＸのみが対応している。第２共有記憶部４１と第３共有記憶部の夫々は、セマフォＹのみが対応している。よって、第１共有記憶部３３にアクセスする際は、セマフォＸで排他する。そして、第２共有記憶部４１及び第３共有記憶部にアクセスする際は、セマフォＹで排他する。
【００３４】
また、図９は、セマフォが三つの場合の各共有記憶部とセマフォとの関係を示している。この場合、第１共有記憶部３３は、セマフォＸのみが対応している。第２共有記憶部４１は、セマフォＹのみが対応している。第３共有記憶部は、セマフォＺのみが対応している。よって、第１共有記憶部３３にアクセスする際は、セマフォＸで排他する。第２共有記憶部４１にアクセスする際は、セマフォＹで排他する。そして、第３共有記憶部にアクセスする際は、セマフォＺで排他する。
【００３５】
しかしながら、車両用制御装置１００は、図９に示すように、複数の共有記憶部の夫々に対して、異なるセマフォＸ，Ｙ，Ｚを設ける場合、記憶部リソーセスの制約を満たすことが厳しくなる。また、車両用制御装置１００は、図７に示すように、複数の共有記憶部に対して一つのセマフォＸを設ける場合、競合確率が高くなる可能性がある。よって、車両用制御装置１００は、図８に示すように、複数の共有記憶部と複数のセマフォを設けることが好ましい。この場合、車両用制御装置１００は、リソーセスの制約を満たしつつ、競合確率を低減できる。
【００３６】
この実行履歴は、第２記憶部３２として、不揮発性メモリに記憶されていると好ましい。つまり、第２記憶部３２は、不揮発性メモリであると好ましい。これによって、車両用制御装置１００は、車両のイグニッションスイッチがオフになって、自身に対する電源の供給が停止された場合であっても、実行履歴を記憶しておくことができる。
【００３７】
なお、第１記憶部３１と第２記憶部３２は、メモリ空間として、一連のアドレスで管理されていてもよい。ＲＯＭは、Read Only Memoryの略称である。ＲＡＭは、Random Access Memoryの略称である。
【００３８】
第１共有記憶部３３は、例えばＲＡＭを採用できる。第１共有記憶部３３は、第１コア１０と第２コア２０が更新及び参照するデータを記憶するための領域である。第１共有記憶部３３には、第１コア１０と第２コア２０が共にアクセスする共有データが含まれている。
【００３９】
入出力回路４０は、車両用制御装置１００とクランク角センサ２１０などのセンサ及びインジェクタ２２０などのアクチュエータとの間で信号のやり取りをするインターフェースである。また、入出力回路４０は、第２共有記憶部４１を備えて構成されている。第２共有記憶部４１は、例えばレジスタを採用できる。第２共有記憶部４１は、第１共有記憶部３３と同様であるため、説明を省略する。
【００４０】
このように、本実施形態では、共有記憶部として、第１共有記憶部３３と第２共有記憶部４１とを採用している。しかしながら、本発明は、これに限定されず、少なくとも一つの共有記憶部を備えていれば目的を達成できる。
【００４１】
ここで、図２〜図５を用いて、車両用制御装置１００の処理動作に関して説明する。車両用制御装置１００の第１コア１０及び第２コア２０は、図２〜図５に示す処理を行う。
【００４２】
まず、図２を用いて、プラットフォームプログラム実行時の処理動作に関して説明する。特に、ここでは、コア排他制御を用いて、共有記憶部にアクセスする際の処理動作に関して説明する。
【００４３】
ステップＳ１０では、セマフォ獲得処理を行う。第１コア１０及び第２コア２０は、コア排他制御を行う場合、すなわち共有記憶部にアクセスする場合、セマフォ獲得処理を行う。第１コア１０及び第２コア２０のうちコア排他制御を行う方は、セマフォ獲得処理を行う。例えば、第１コア１０は、第１共有記憶部３３にアクセスする場合、セマフォ獲得処理を行う。つまり、第１コア１０は、最初に、セマフォ獲得処理を呼び出し、第１共有記憶部３３に対するアクセスをロックする。この場合、第２コア２０は、セマフォを獲得できていないので、第１共有記憶部３３にアクセスできない。
【００４４】
ステップＳ１２では、共有記憶部にアクセスする。第１コア１０及び第２コア２０のうちステップＳ１０でセマフォを獲得した方は、共有記憶部にアクセスする。例えば、第１コア１０は、セマフォを獲得した場合、第１共有記憶部３３にアクセスして、第１共有記憶部３３に記憶されたデータの更新や参照を行う。このとき、第２コア２０は、セマフォを獲得できていないので、第１共有記憶部３３にアクセスできない。
【００４５】
ステップＳ１４では、セマフォ解放処理を行う。つまり、第１コア１０及び第２コア２０は、セマフォ解放処理を行う。第１コア１０及び第２コア２０のうちステップＳ１０でセマフォを獲得した方は、獲得していたセマフォを解放する。例えば、第１コア１０は、セマフォを獲得していた場合、第１共有記憶部３３に記憶されたデータの更新や参照を行うと、セマフォを解放する。第２コア２０は、第１コア１０がセマフォを解放すると、セマフォを獲得可能となる。なお、セマフォの解放処理は、セマフォを獲得したコアしかできない。よって、第１コア１０がセマフォを獲得した場合、セマフォの解放処理は、第１コア１０のみが行うことができる。
【００４６】
ここで、共有記憶部に対して第１コア１０と第２コア２０のアクセスが競合する一例を説明する。
【００４７】
まず、一つ目の例は、第１共有記憶部３３がＲＡＭの場合である。第１コア１０は、カウンタインクリメントして時間を計測する。また、第１コア１０は、第１共有記憶部３３にアクセスして、第１共有記憶部３３に記憶されたカウント値をインクリメントすることで時間を計測するとも言える。一方、第２コア２０は、ある条件が成立するとカウンタクリアして計測時間をクリアする。また、第２コア２０は、ある条件が成立すると第１共有記憶部３３にアクセスして、第１共有記憶部３３に記憶されたカウント値をクリアすることで計測時間をクリアするとも言える。
【００４８】
この例の場合、競合が発生すると、第１コア１０によるカウンタインクリメントの間に、第２コア２０によるカウンタクリアが行われてしまう。つまり、第１共有記憶部３３のカウント値は、第１コア１０によってインクリメントしている間に、第２コア２０によってクリアされてしまう。よって、第１コア１０は、意図せず計測し続けてしまうという懸念がある。そのため、第１コア１０及び第２コア２０は、カウンタを操作する際、コア排他制御を行って第１共有記憶部３３にアクセスする。
【００４９】
次の例は、第２共有記憶部４１がレジスタの場合である。第１コア１０及び第２コア２０は、第２共有記憶部４１の値を用いて、複数の端子における夫々の出力レベルを設定する。つまり、第１コア１０及び第２コア２０は、同一の第２共有記憶部４１を操作して、複数端子の出力レベルを個別に設定する。また、ある端子の出力レベル変更時には、他の端子の出力レベルを変更しないように、現在の出力設定状態を読み出し、該当する端子のビットのみ変更して再度書き込む必要がある。この例の場合、競合が発生すると、第１コア１０と第２コア２０で第２共有記憶部４１における別端子の出力レベルを変更することがおこり得る。そして、第１コア１０による書き込みと第２コア２０による書き込みとが干渉すると、あるコアで更新した出力レベルは、反映されない懸念がある。そのため、第１コア１０及び第２コア２０は、第２共有記憶部４１を操作する際は、コア排他制御を行って第２共有記憶部４１にアクセスする。
【００５０】
次に、図３を用いて、セマフォ獲得処理時の処理動作に関して説明する。以下においては、主に、第１コア１０の処理動作を用いて説明する。当然ながら、第２コア２０でも同様の処理動作を行う。
【００５１】
ステップＳ２０では、セマフォ獲得処理を実行しているコアＩＤを取得する。第１コア１０及び第２コア２０は、セマフォ獲得処理を実行しているコアＩＤを取得する。例えば、第１コア１０がセマフォ獲得処理を実行した場合、第１ＣＰＵ１１は、第１メモリ１３から自身の第１コアＩＤを取得する。
【００５２】
ステップＳ２２では、セマフォ獲得処理を実行したコアの履歴を更新する。第１コア１０及び第２コア２０は、図６に示すコア実行履歴を更新する。例えば、第１コア１０は、図３のフローチャートで示すセマフォ獲得処理を実行した場合、自身の実行履歴を１とする。言い換えると、第１コア１０及び第２コア２０は、セマフォ獲得処理を実行した場合、コア実行履歴における自身に対応する値を、実行履歴ありを示す値にする。
【００５３】
つまり、第１記憶部３１に記憶されているプログラムは、セマフォ獲得処理を実行したコアのコアＩＤを取得する手順（ステップＳ２０）と、取得したコアＩＤに対応する実行履歴を更新する手順（ステップＳ２２）を含んでいると言える。
【００５４】
このように、第１コア１０と第２コア２０は、自身がコア排他制御を実行した場合、実行したコア排他制御と、自身に割り振られたコアＩＤとを関連付けた情報を実行履歴として第２記憶部３２に記憶することで、実行履歴を更新する（更新部）と言える。つまり、更新部は、コア排他制御を実行した演算部（第１コア１０と第２コア２０のいずれか）に対応するコア実行履歴を更新すると言える。
【００５５】
なお、車両用制御装置１００は、第１コア１０及び第２コア２０の夫々が、セマフォ獲得処理を実行した場合、自身のコア実行履歴を更新できれば目的を達成できる。よって、本発明は、ステップＳ２０を含まなくても目的を達成できる。つまり、第１記憶部３１に記憶されているプログラムは、コア実行履歴を更新するためにコアＩＤを取得する手順を含むことなく、セマフォ獲得処理を実行したコアが、自身に対応するコア実行履歴を更新する手順を含んでいるものであってもよい。
【００５６】
ステップＳ２４では、複数コアでの実行履歴があるかを判定する。つまり、第１コア１０及び第２コア２０は、コア実行履歴において、第１コア１０及び第２コア２０の両方で実行履歴ありを示す値であるか否かを判定する。そして、第１コア１０及び第２コア２０は、両コアでの実行履歴があると判定した場合はステップＳ２６へ進み、両コアでの実行履歴があると判定しなかった場合は図３の処理を終了する。後程説明するが、第１コア１０及び第２コア２０は、ステップＳ２６でスピンロック処理を行う。
【００５７】
例えば、第１コア１０は、コア実行履歴における第１コア１０に対応する値が１で、第２コア２０に対応する値が１の場合、複数コアでの実行履歴があると判定し、すなわち、スピンロック処理が必要であるとみなして、ステップＳ２６へ進む。また、第１コア１０は、コア実行履歴における第１コア１０に対応する値が１で、第２コア２０に対応する値が０の場合、複数コアでの実行履歴があると判定せず、スピンロック処理が必要であるとみなして、図３の処理を終了する。つまり、第１コア１０と第２コア２０は、コア実行履歴における第１コア１０に対応する値がと第２コア２０に対応する値の少なくとも一方が０の場合、複数コアでの実行履歴があると判定せずに、図３の処理を終了する。
【００５８】
ステップＳ２６では、スピンロック処理を実行する。スピンロック処理に関しては、図４のフローチャートを用いて説明する。
【００５９】
ステップＳ３０では、セマフォを獲得する。詳述すると、第１コア１０及び第２コア２０は、複数コアでの実行履歴があると判定した場合、セマフォの獲得を試みる。例えば、第１コア１０がステップＳ２４でＹＥＳ判定した場合、第１コア１０は、セマフォを獲得しようとする。第１コア１０は、例えば第１共有記憶部３３へのアクセスが第２コア２０と競合しないようにするために、セマフォを獲得しようとする。このとき、セマフォが解放中であった場合、第１コア１０は、第２記憶部３２にアクセスして、セマフォ解放中をセマフォ獲得中に書き換え、セマフォ獲得中であるコアのコアＩＤを、自身のコアＩＤに書き換える。一方、セマフォが獲得中であった場合、第１コア１０は、その状態を継続する。つまり、第２記憶部３２は、セマフォ獲得中の状態が維持され、且つ、セマフォ獲得中であるコアのコアＩＤが書き換えられることなく維持される。なお、セマフォ解放中をセマフォ獲得中に書き換えるとは、セマフォ情報を、セマフォ解放中を示す内容からセマフォ獲得中を示す内容に書き換えることである。
【００６０】
ステップＳ３２では、セマフォ獲得が成功したか否かを判定する。例えば、第１コア１０は、セマフォ獲得を試みた後における、第２記憶部３２の記憶内容を確認し、セマフォ獲得中であるコアのコアＩＤが自身のものと一致するか否かによって、成功したか否かを判定する。そして、第１コア１０は、コアＩＤが自身のものと一致すると判定した場合に成功したとみなして図４の処理を終了し、コアＩＤが自身のものと一致しないと判定した場合に失敗したとみなしてステップＳ３０へ戻る。第１コア１０は、一致するまで、ステップＳ３０、Ｓ３２を繰り返す。つまり、スピンロック処理を行うコアは、他コアがセマフォを獲得していないと判定した場合にセマフォ獲得に成功したとみなし、他コアがセマフォを獲得していると判定した場合にセマフォ獲得に失敗したとみなす、とも言える。ここで、セマフォ獲得は、セマフォ状態を確認してセマフォを書き換えるまで、アトミック（不可分）に行われ、一連の処理に他コアの処理が割り込めないようになっている。
【００６１】
このように、第１コア１０と第２コア２０は、ステップＳ２４でＹＥＳ判定の場合、すなわち、複数の排他制御のうち第１コア１０及び第２コア２０の両方で実行されたことを示す実行履歴が記憶されたコア排他制御に関してはコア排他制御を実行する。しかしながら、第１コア１０と第２コア２０は、ステップＳ２４でＮＯ判定の場合、すなわち複数のコア排他制御のうち第１コア１０及び第２コア２０の両方で実行されたことを示す実行履歴が記憶されていないコア排他制御に関してはコア排他制御を実行しない。
【００６２】
次に、図５を用いて、セマフォ解放処理時の処理動作に関して説明する。
【００６３】
ステップＳ４０では、複数コアでの実行履歴があるかを判定する。つまり、第１コア１０及び第２コア２０は、ステップＳ２２で更新したコア実行履歴において、第１コア１０及び第２コア２０の両方で実行履歴ありを示す値であるか否かを判定する。そして、第１コア１０及び第２コア２０は、両コアでの実行履歴があると判定した場合はステップＳ４２へ進み、両コアでの実行履歴があると判定しなかった場合は図４の処理を終了する。例えば、第１コア１０は、コア実行履歴における第１コア１０に対応する値が１で、第２コア２０に対応する値が１の場合、複数コアでの実行履歴があると判定して、ステップＳ４２へ進む。そして、ステップＳ４２では、セマフォを解放する。例えば、第１コア１０は、第２記憶部３２にアクセスして、セマフォ獲得中をセマフォ解放中に書き換える。つまり、第１コア１０は、セマフォ情報を、セマフォ獲得中を示す内容からセマフォ解放中を示す内容に書き換える。このように、セマフォを獲得しているコアは、第２記憶部３２の記憶内容を、セマフォ解放中を示す内容に書き換えることで、セマフォを解放する。
【００６４】
このように、車両用制御装置１００は、各コア排他制御が第１コア１０と第２コアによって実行されたか否かを示す実行履歴を記憶している第２記憶部３２を有している。よって、車両用制御装置１００は、複数のコア排他制御の夫々を実行したコアがわかるように構成されている。そして、第１コア１０と第２コア２０で実行されたコア排他制御は、第１コア１０と第２コア２０による共有記憶部への競合が発生する可能性がある。このため、第１コア１０と第２コア２０は、複数のコア排他制御のうち第１コア１０と第２コア２０とで実行されたことを示す実行履歴が記憶されたコア排他制御に関してはコア排他制御を実行する。一方、第１コア１０と第２コア２０で実行されていないコア排他制御は、第１コア１０と第２コア２０による共有記憶部への競合が発生する可能性がない。このため、第１コア１０と第２コア２０は、複数のコア排他制御のうち第１コア１０と第２コア２０の両方で実行されたことを示す実行履歴が記憶されていないコア排他制御に関してはコア排他制御を実行しない。
【００６５】
よって、車両用制御装置１００は、第１コア１０と第２コアによる共有記憶部への競合が発生する可能性がない場合にコア排他制御が実行されることを抑制できる。従って、車両用制御装置１００は、必要以上にコア排他制御を行うことを抑制できる。
【００６６】
なお、これによって、車両用制御装置１００は、コアによるロード増加の低減が期待できる。このため、車両用制御装置１００は、コアによるロードリソーセス制約を守りやすくなる。
【００６７】
ところで、上記のように車両用制御装置１００は、一例としてエンジン制御装置を採用できる。通常、エンジン制御装置は、厳しいリアルタイム時間が設けられて制御を行う。しかしながら、車両用制御装置１００は、必要以上にコア排他制御を行うことを抑制できるため、厳しいリアルタイム時間であり、且つ、コア排他制御を実行するために割り込みを行ったとしても、割り込みによる遅延の低減が期待できる。
【００６８】
また、プラットフォームプログラムは、上記のように、共有記憶部へアクセスされる全ての処理に対応してコア排他制御が行われるように構成されている。しかしながら、車両用制御装置１００は、複数のコア排他制御のうち第１コア１０と第２コア２０の両方で実行されたことを示す実行履歴が記憶されていないコア排他制御に関してはコア排他制御を実行しない。このため、車両用制御装置１００は、フルでコア排他制御が行われるように構成されたプラットフォームプログラムであっても、第１コア１０と第２コア２０による共有記憶部への競合が発生する可能性がない場合、コア排他制御が実行されることを抑制できる。
【００６９】
以上、本発明の好ましい実施形態について説明した。しかしながら、本発明は、上記実施形態に何ら制限されることはなく、本発明の趣旨を逸脱しない範囲において、種々の変形が可能である。
【００７０】
（第２実施形態）
第２実施形態の車両用制御装置１００ａは、車両用制御装置１００と同様の個所が多いため、車両用制御装置１００と異なる点を主に説明する。車両用制御装置１００ａは、図１０に示すように、第２記憶部３２のかわりに排他制御部３２ａが設けられている点が、車両用制御装置１００と異なる。さらに、車両用制御装置１００ａは、第１コア１０及び第２コア２０の処理内容が車両用制御装置１００と異なる。
【００７１】
排他制御部３２ａは、上記のようなセマフォ情報とコア実行履歴を備えて構成されている。この排他制御部３２ａは、特許請求の範囲における記憶部に相当する。そして、排他制御部３２ａは、第１コア１０と第２コア２０のかわりに、コア実行履歴の管理を行う。つまり、排他制御部３２ａは、第１コア１０が図３に示すセマフォ獲得処理を実行しようとした場合、ステップＳ２２でコア実行履歴を更新する。
【００７２】
このように、排他制御部３２ａは、コア排他制御を実行したコアを判断する。そして、排他制御部３２ａは、実行されたコア排他制御と、このコア排他制御を実行したコアのコアＩＤとを関連付けた情報を実行履歴として記憶する。例えば、第１コア１０があるコア排他制御を実行した場合、排他制御部３２ａは、実行されたコア排他制御と、第１コアＩＤとを関連付けた情報を実行履歴として記憶する。
【００７３】
また、排他制御部３２ａは、第１コア１０と第２コア２０のかわりに、セマフォ情報の書き換えを行ってもよい。この場合、排他制御部３２ａは、第１コア１０が図４のスピンロック処理を実行する場合、セマフォ解放中をセマフォ獲得中に書き換え、セマフォ獲得中であるコアのコアＩＤを、第１コア１０のコアＩＤに書き換える。しかしながら、排他制御部３２ａは、上記と同様に、ステップＳ３０でセマフォが獲得中であった場合、セマフォ情報の書き換えは行なわない。そして、排他制御部３２ａは、第１コア１０が図５のセマフォ解放処理を実行する場合、セマフォ獲得中をセマフォ解放中に書き換える。
【００７４】
車両用制御装置１００ａは、車両用制御装置１００と同様の効果を奏することができる。
【符号の説明】
【００７５】
１０…第１コア、１１…第１ＣＰＵ、１２…第１レジスタ、１３…第１メモリ、２０…第２コア、２１…第２ＣＰＵ、２２…第２レジスタ、２３…第２メモリ、３１…第１記憶部、３２…第２記憶部、３２ａ…排他制御部、３３…第１共有記憶部、４０…入出力回路、４１…第２共有記憶部、１００，１００ａ…車両制御装置、２１０…クランク角センサ、２２０…インジェクタ
【図１】
0006512087.tif 000002
【図２】
0006512087.tif 000003
【図３】
0006512087.tif 000004
【図４】
0006512087.tif 000005
【図５】
0006512087.tif 000006
【図６】
0006512087.tif 000007
【図７】
0006512087.tif 000008
【図８】
0006512087.tif 000009
【図９】
0006512087.tif 000010
【図１０】
0006512087.tif 000011