(57)【要約】【課題】リアルタイム性が必要な車載制御装置において、競合処理の実行タイミングをずらすことでリアルタイム性を実現した上で処理の競合を回避する技術を提供することにある。【解決手段】車載制御装置は、複数のコアと、各コアに対応して設けられ、一定条件で起動する複数の処理部と、各コアに対応して設けられ、前記複数の処理部と同時に起動していた場合、優先的に処理される複数の優先処理部と、前記複数の優先処理部が動作していないことを監視する監視部と、前記監視部から指示で各コアの前記処理部を起動する起動指示部と、を備える。【選択図】図３
2022002015.tif 000002
【特許請求の範囲】
【請求項１】
複数のコアと、
各コアに対応して設けられ、一定条件で起動する複数の処理部と、
各コアに対応して設けられ、前記複数の処理部と同時に起動していた場合、優先的に処理される複数の優先処理部と、
前記複数の優先処理部が動作していないことを監視する監視部と、
前記監視部から指示で各コアの前記処理部を起動する起動指示部と、を備える、
ことを特徴とする車載制御装置。
【請求項２】
請求項１に記載の車載制御装置において、
前記起動指示部は、前記優先処理部が起動しないように制御するコア占有処理を実施し、前記コア占有処理の終了後、前記複数の処理部を起動させる、ことを特徴とする車載制御装置。
【請求項３】
請求項２に記載の車載制御装置において、
各コアに対応して設けられた調停処理部を備え、
前記起動指示部は、前記複数の処理部の起動前に、前記調停処理部を起動し、前記調停処理部の終了後に、前記複数の処理部を起動する、ことを特徴とする車載制御装置。
【請求項４】
請求項３に記載の車載制御装置において、
各コアに対応して設けられ、各コアの状態を管理する複数のコア状態管理部を備え、
前記監視部は、前記複数のコア状態管理部の状態を監視し、前記起動指示部へと指示する、ことを特徴とする車載制御装置。
【請求項５】
請求項３に記載の車載制御装置において、
各コアに対応して設けられ、各コアを占有する複数のコア占有部を備え、
前記監視部は、前記複数のコア占有部の起動を監視する、ことを特徴とする車載制御装置。
【請求項６】
請求項５に記載の車載制御装置において、
前記調停処理部は、複数のサブ調停処理部に分かれ、
前記監視部はコア状態を前記起動指示部に通知し、
前記起動指示部はコア状態に応じて前記複数のサブ調停処理部を起動させる、ことを特徴とする車載制御装置。
【請求項７】
請求項６に記載の車載制御装置において、
前記複数のサブ調停処理部のおのおのは起動優先度を持つ、ことを特徴とする車載制御装置。
【請求項８】
請求項７に記載の車載制御装置において、
前記起動指示部は、前記複数のサブ調停処理部の前記起動優先度の順に調停処理を起動する、ことを特徴とする車載制御装置。
【請求項９】
請求項８に記載の車載制御装置において、
前記起動指示部は、コア状態と優先度とに応じて前記複数の処理部を起動する、ことを特徴とする車載制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車載制御装置に関し、複数のＣＰＵコア（マルチコア）を有する半導体装置を含む車載制御装置に適用して有効な技術に関し、特に、マルチコアにおける並列ソフトウェアの性能向上と一貫性保証を実現する技術に適用可能である。
【背景技術】
【０００２】
車載制御装置には、複数のＣＰＵコアを有するマイクロコントローラ等の半導体装置が採用されるようになってきた。ＣＰＵコアのマルチコア化により、車載制御装置に採用されるソフトウェア構造が複雑化している。複数機能が並列に動作する場合のデータ競合解決が問題であり、ソフトウェア設計の難しさの原因となっている。
【０００３】
処理タイミングをなるべく静的に設計することで、ソフトウェア設計の複雑さを解消する技術が議論されている。時分割スケジューリングでは、ＣＰＵの実行時間を一定区間に区切り(タイムスロット)、タイムスロット単位で処理を切り替える。割り込みなどの概念も、高優先度かつ小さめのタイムスロットの定義で実現する。
【０００４】
ＬＥＴ（Logical Execution Time）では、各処理にＬＥＴを割り当てる。処理を入力・計算・出力に分ける。例えばLET = 5msの処理の場合、早めに処理が終わったとしても、開始から5ms立つまでは出力処理を実施しない。
【０００５】
これらの思想を実現することでリアルタイム性の維持と設計の容易さを両立できる。これら技術の導入にあたり、並列ソフトウェアとしては、同時並列に処理されるデータの一貫性保証ないし一貫性確保が重要である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−１５２６３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１によると、同時期に実行される複数の処理が競合する場合、より優先度の低い処理の実行をあきらめ、より優先度の高い処理を行い、あきらめた処理は再度スケジューリングすることで処理を継続するとある。
【０００８】
しかしながら、制御や指令値計算のリアルタイム制が重要となる車載制御装置及びそのソフトウェアでは、競合処理をあきらめることにより連続値の抜けや遅延が発生し、かえって制御が不安定になる恐れがある。
【０００９】
本発明の課題は、リアルタイム性が必要な車載制御装置において、競合処理の実行タイミングをずらすことでリアルタイム性を実現した上で処理の競合を回避する技術を提供することにある。
【００１０】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１２】
一実施の形態に係る車載制御装置は、複数のコアと、各コアに対応して設けられ、一定条件で起動する複数の処理部と、各コアに対応して設けられ、前記複数の処理部と同時に起動していた場合、優先的に処理される複数の優先処理部と、前記複数の優先処理部が動作していないことを監視する監視部と、前記監視部から指示で各コアの前記処理部を起動する起動指示部と、を備える。
【発明の効果】
【００１３】
上記車載制御装置によれば、リアルタイム性を維持しつつ、競合を回避することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】図１は、本発明の対象となる車載システムの全体的な構成例を示す図である。
【図２】図２は、図１の車載制御装置の構成例を説明する図である。
【図３】図３は、実施例１に係るソフトウェアの構成例を示す図である。
【図４】図４は、実施例２に係るソフトウェアの構成例を示す図である。
【図５】図５は、実施例３に係るソフトウェアの構成例を示す図である。
【図６】図６は、実施例４に係るソフトウェアの構成例を示す図である。
【図７】図７は、実施例５に係る調停処理部の構成例を示す表である。
【図８】図８は、実施例５に係るソフトウェアの処理を示すフローチャート図である。
【図９】図９は、実施例６に係る調停処理部の構成例を示す表である。
【発明を実施するための形態】
【００１５】
以下、実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。なお、図面は説明をより明確にするため、実際の態様に比べ、模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
【実施例１】
【００１６】
本実施例において、車載制御装置１は監視部２０１及び処理起動指示部２０２を備える（図３参照）。これにより、各コアにおいて、競合処理の実行タイミングをずらすことで、車載制御装置１はリアルタイム性を実現した上で処理の競合を回避することができる。
【００１７】
（車載システムの全体的な構成例）
ます、本発明の対象となる車載システムについて、図1を用いて説明する。図１は、本発明の対象となる車載システムの全体的な構成例を示す図である。車載システムＳＹＳは複数の車載制御装置1と、複数の車載ネットワーク２と、複数のセンサ３と、複数のアクチュエータ４とを備える。
【００１８】
車載制御装置１は車載ネットワーク２に接続され、車載ネットワーク２に対して通信データを送信することで、車載制御装置１間のデータ交換が実現される。車載制御装置１は、センサ３から得たデータを元に制御指令値を計算し、アクチュエータ４への指令や、他の制御指令装置（不図示）への通信データを作成する。
【００１９】
車載ネットワーク２はＣＡＮ（Ｃｏｎｔｒｏｌ  Ａｒｅａ  ｎｅｔｗｏｒｋ）やＥｔｈｅｒＮｅｔやその他通信プロトコルで実現される。車載ネットワーク２は有線だけでなく無線等その他通信手段で実現される。
【００２０】
センサ３は、角度センサや速度センサ、ブレーキ圧などの圧力を検知する圧力センサやカメラやＬａｄａｒやＬｉｄａｒなどの外界を検知するための検知装置や、スイッチ等の外界や人間の操作やその他車両に加わる物理的な情報をデジタルデータ又はアナログデータとして車載制御装置１に通知する。
【００２１】
アクチュエータ４は、エンジンやモータやブレーキや、その他電磁弁といった車両の挙動に影響するものや、カーナビやメータやブザーやランプなどといった運転手や車両の周りにいるものに情報を知らせるものや、ブレーキペダルやアクセルへの反発やシートベルトやハンドル等運転手や乗車者の安全性や操作装置など、制御信号によって動作させることができるすべての装置を指す。
【００２２】
車載制御装置１は、センサ３からの入力と他の車載制御装置１からの通信データを元に制御指令値を計算し、他の車載制御装置１にデータを転送し、アクチュエータへ制御指令値を伝えることで車両を動作させ、運転手や乗車者に車両の機能を提供する。
【００２３】
（車載制御装置の構成例）
図２は、図１の車載制御装置の構成例を説明する図である。車載制御装置１は、ソフトウェアの処理を行う複数のコア（Core０、Core1、・・・、CoreN）１０１（１０１−０、１０１−１、・・・、１０１−Ｎ）と、グローバルＲＡＭ（ＧｌｏｂａｌＲＡＭ）１０４と、入出力インターフェイス（入出力ＩＦ）１０５と通信インターフェイス（通信ＩＦ）１０６と不揮発性メモリ１０７と、バス１０８と、を含む。各回路（１０１−０、１０１−１、・・・、１０１−Ｎ、１０４、１０５、１０６、１０７）がバス１０８によって相互に接続されている。各コア１０１（１０１−０、１０１−１、・・・、１０１−Ｎ）は０個以上のローカルＲＡＭ（ＬｏｃａｌＲＡＭ）１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）と０個以上のローカルＲＯＭ（ＬｏｃａｌＲＯＭ）１０３（１０３−０、１０３−１、・・・、１０３−Ｎ）とを有し、各コア１０１（１０１−０、１０１−１、・・・、１０１−Ｎ）とローカルＲＡＭ１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）とローカルＲＯＭ１０３（１０３−０、１０３−１、・・・、１０３−Ｎ）は、バス１０８に接続されている。車載制御装置１は、たとえば、複数の中央処理装置（ＣＰＵコア）を有するマイクロコントローラ等の半導体装置を用いて構成することができる。ここで、複数の中央処理装置（ＣＰＵコア）は、複数のコア（Core０、Core1、・・・、CoreN）１０１（１０１−０、１０１−１、・・・、１０１−Ｎ）に相当する。
【００２４】
ＬｏｃａｌＲＡＭ１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）は、ソフトウェアが計算する際に使用するデータが格納される。ＬｏｃａｌＲＡＭ１０２へのデータアクセスはＬｏｃａｌＲＡＭ１０２を保有するコアは読み書きが可能である。他コアから読み書きできる場合もある。他コアから読み書きする場合、その処理速度は自コア１０１から読み書きするのに比べて低速である。つまり、ＬｏｃａｌＲＡＭ１０２−０を例として説明すると、ＬｏｃａｌＲＡＭ１０２−０を保有するコア１０１−０は、ＬｏｃａｌＲＡＭ１０２−０の読み書きが可能である。また、ＬｏｃａｌＲＡＭ１０２−０は、他のコア（１０１−１、・・・、１０１−Ｎ）から読み書きできる場合もある。他コア（１０１−１、・・・、１０１−Ｎ）からＬｏｃａｌＲＡＭ１０２−０を読み書きする場合、その処理速度は自コアであるコア１０１−０から読み書きするのに比べて低速である。
【００２５】
ＬｏｃａｌＲＯＭ１０３（１０３−０、１０３−１、・・・、１０３−Ｎ）は、ソフトウェアが計算する際に使用するプログラムが格納される。データを格納することも可能である。ＬｏｃａｌＲＯＭ１０３へのアクセスはＬｏｃａｌＲＯＭ１０３を保有するコアは読み書きが可能である。他コアから読み書きできる場合もある。他コアから読み書きする場合、その処理速度は自コアから読み書きするのに比べて低速である。つまり、ＬｏｃａｌＲＯＭ１０３−０を例として説明すると、ＬｏｃａｌＲＯＭ１０３−０を保有するコア１０１−０は、ＬｏｃａｌＲＯＭ１０３−０の読み書きが可能である。また、ＬｏｃａｌＲＯＭ１０３−０は、他のコア（１０１−１、・・・、１０１−Ｎ）から読み書きできる場合もある。他コア（１０１−１、・・・、１０１−Ｎ）からＬｏｃａｌＲＯＭ１０３−０を読み書きする場合、その処理速度は自コアであるコア１０１−０から読み書きするのに比べて低速である。ＬｏｃａｌＲＯＭ１０３は、たとえば、電気的に書込みおよび消去が可能なフラッシュメモリやＥＥＰＲＯＭ(Electrically Erasable Programmable Read-Only Memory）等を利用することができる。
【００２６】
ＧｌｏｂａｌＲＡＭ１０４は、ソフトウェアが計算する際に使用するデータが格納される。ＧｌｏｂａｌＲＡＭ１０４へのデータアクセスはすべてのコア１０１（１０１−０、１０１−１、・・・、１０１−Ｎ）から読み書きが可能である。ＬｏｃａｌＲＡＭ１０２に比べ、ＧｌｏｂａｌＲＡＭ１０４への読み書きは低速であることが多い。また、ＧｌｏｂａｌＲＡＭ１０４はＬｏｃａｌＲＡＭ１０２に比べ格納可能なデータ量が多いことがある。ＬｏｃａｌＲＡＭ１０２やＧｌｏｂａｌＲＡＭ１０４は、たとえば、揮発性メモリであるスタチックランダムアクセルメモリ（ＳＲＡＭ：  Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やダイナミックランダムアクセルメモリ（ＤＲＡＭ：  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等を利用することができる。
【００２７】
入出力ＩＦ１０５は、センサ３からのデータ入力を受け付け、また他の構成要素から受け付けたデータをアクチュエータ４へと出力する。
【００２８】
通信ＩＦ１０６は通信ネットワーク２につながる。通信ネットワーク２から受信したデータを各構成要素が参照可能な状態にする。また、各構成要素から受領したデータを通信ネットワーク２に送信する。
【００２９】
不揮発性メモリ１０７は、車載制御装置１の電源がＯＦＦになった後もデータを保持し続けることができる。電源ＯＦＦ前のソフトウェア状態を保持し、車両ごとの制御指令値の初期値や固定値を保存することが可能である。不揮発性メモリ１０７は、たとえば、電気的に書込みおよび消去が可能なフラッシュメモリやＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等を利用することができる。
【００３０】
車載制御装置１では、センサ３で得られた値を入出力ＩＦ１０５で取得し、各Ｃｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）が参照可能な状態にする。また、通信ＩＦ１０６は通信ネットワーク２からデータを入手して、各Ｃｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）が参照可能な状態にする。これら参照可能なデータを入力データとして各Ｃｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）は、処理を行う。
【００３１】
各Ｃｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）は入力データと、不揮発性メモリ１０７に格納されていたデータと、ＬｏｃａｌＲＡＭ（１０２−０、１０２−１、・・・、１０２−Ｎ）に保持しているデータや、ＧｌｏｂａｌＲＡＭ１０４に保持しているデータを用いて、ＬｏｃａｌＲＯＭ（１０３−０、１０３−１、・・・、１０３−Ｎ）に保持しているプログラムに従い、処理を行う。処理途中の一時データはＬｏｃａｌＲＡＭ（１０２−０、１０２−１、・・・、１０２−Ｎ）や、ＧｌｏｂａｌＲＡＭ１０４に保持する。処理結果の一部はＬｏｃａｌＲＡＭ（１０２−０、１０２−１、・・・、１０２−Ｎ）や、ＧｌｏｂａｌＲＡＭ１０４に保持することで、他Ｃｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）や、次の処理時に利用可能とする。処理結果の一部は、入出力ＩＦ１０５や通信ＩＦ１０６から参照可能な出力データにする。処理結果の一部は、不揮発性メモリ１０７に書き込まれ、保持される。不揮発性メモリ１０７に書き込まれた処理結果は、電源ＯＦＦ後も保持され、次の電源ＯＮ時に各Ｃｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）によって利用される。
【００３２】
この時、複数のＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）がＬｏｃａｌＲＡＭ（１０２−０、１０２−１、・・・、１０２−Ｎ）に保持しているデータや、ＧｌｏｂａｌＲＡＭ１０４に保持しているデータに対してアクセスするような場合に、意図しないタイミングでの読み書きが行われることをデータ競合と呼ぶ。ここで、意図しないタイミングとは、たとえば、あるＣｏｒｅ１０１が書き込んだ、あるＬｏｃａｌＲＡＭ（１０２−０、１０２−１、・・・、１０２−Ｎ）に保持している計算経過のデータや、ＧｌｏｂａｌＲＡＭ１０４に保持している計算経過のデータを、引き続きあるＣｏｒｅ１０１で使用する場合に、計算結果が出る前のタイミングを指す。
【００３３】
この時のデータは、単一の整数や小数や文字列やフラグなどの変数や、複数の変数をセットとしたデータセットや、そのほかのデータ保持方法で表せられる。
【００３４】
また、計算経過に限らず、計算前であったとしても、本来意図したタイミングのデータを書き換えられてしまうケースもデータ競合という。ここで、本来意図したタイミングとは、例えば、1周期に1度参照されるデータに対して、一定周期毎に更新されるタイミングを示す。
【００３５】
入出力ＩＦ１０５によって参照可能な状態である出力データは、入出力ＩＦ１０５によってアクチュエータ４に通知される。アクチュエータ４は出力データに対して設計された又は定められた動作を行う。通信ＩＦ１０６によって参照可能な状態である出力データは、通信ＩＦ１０６によって通信ネットワーク２に対して出力される。必要に応じて通信ＩＦ１０６は参照した出力データを通信ネットワーク２に送信可能な形に変換する。
【００３６】
このようなデータ競合がある処理同士を競合関係にあるとする。
【００３７】
（ソフトウェアの構成例）
図３は、実施例１に係るソフトウェアの構成例を示す図である。図３に示すソフトウェア２００は車載制御装置１で実行される。本ソフトウェア２００は、監視部２０１と、処理起動指示部２０２と、複数の優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）と、複数の処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）と、により構成される。コアＣｏｒｅ０（１０１−０）では、監視部２０１、処理起動指示部２０２、優先処理部２０３−０、および、処理部２０４−０が構成される。コアＣｏｒｅ０（１０１−０）以外の他のコアＣｏｒｅ１−ＣｏｒｅＮ（１０１−１、・・・、１０１−Ｎ）のおのおのでは、１つの優先処理部、および、１つの処理部が構成される。つまり、コアＣｏｒｅ１（１０１−１）では、優先処理部２０３−１、および、処理部２０４−１が構成される。コアＣｏｒｅＮ（１０１−Ｎ）では、優先処理部２０３−Ｎ、および、処理部２０４−Ｎが構成される。
【００３８】
優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）は、処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）よりも優先が高く設定された処理である。優先処理部２０３の起動中は、同じコアＣｏｒｅ１０１内の処理部２０４が動作することができず、もし同じコアＣｏｒｅ１０１内の処理部２０４の起動処理が実施されれば、同じコアＣｏｒｅ１０１内の優先処理部２０３が終了するまで処理部２０４は起動待機することになる。処理部２０４は、一定の条件で起動するということができる。
【００３９】
処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）は、処理起動指示部２０２の指令を待って処理を起動する。
【００４０】
処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）や優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）は、不揮発性メモリ１０７に格納されていたデータと、ＬｏｃａｌＲＡＭ１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）に保持しているデータや、ＧｌｏｂａｌＲＡＭ１０４に保持しているデータを用いて、ＬｏｃａｌＲＯＭ１０３（１０３−０、１０３−１、・・・、１０３−Ｎ）に保持しているプログラムに従い、処理を行う。処理途中の一時データはＬｏｃａｌＲＡＭ１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）や、ＧｌｏｂａｌＲＡＭ１０４に保持する。処理結果の一部はＬｏｃａｌＲＡＭ１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）や、ＧｌｏｂａｌＲＡＭ１０４に保持することで、他のコアＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）や、次の処理時に利用可能とする。処理結果の別の一部は、入出力ＩＦ１０５や通信ＩＦ１０６から参照可能な出力データとして出力する。
【００４１】
監視部２０１は、優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）の起動状況を監視し、処理起動指示部２０２に起動指示を行う。監視部２０１は、各コア（１０１−０、１０１−１、・・・、１０１−Ｎ）の優先処理部２０３が終了しているか否かを監視しており、全ての優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）の動作が停止したとき、監視部２０１は、処理起動指示部２０２に対して起動指示を通知する。起動指示は、フラグや整数やその他ソフトウェア上で表せるデータを用いる。
【００４２】
処理起動指示部２０２は、監視部２０１からの起動指示を元に、処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）に対して起動を指示する。つまり、処理起動指示部２０２は、優先処理部２０３が起動しないように制御するコア占有処理を実施し、コア占有処理の終了後、複数の処理部２０４を起動させる。
【００４３】
起動方法は、ＯｐｅｒａｔｉｎｇＳｙｔｅｍ（以下ＯＳ）の機能である、ＯＳＥｖｅｎｔによる起動方法がある。各処理は、対応するＯＳＥｖｅｎｔを設定する。任意の処理が任意のＯＳＥｖｅｎｔを発行することができる。ＯＳはＯＳＥｖｅｎｔが発行されると対応する処理を起動させる。起動した処理は、優先度などのＯＳのスケジューリング方法により起動される。また、起動方法は上記に限らず処理起動指示部から処理を起動させることができる手段であれば実現方法は問わない。
【００４４】
実施例1によれば、処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）が優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）と競合関係にある時、監視部２０１は優先処理部２０３が起動していない状況で起動指示を行い、かつ処理起動指示部２０２が処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）に対して起動処理を行うことで、一度に処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）が動作可能となる。本実施例により、各コア１０１（１０１−０、１０１−１、・・・、１０１−Ｎ）にまたがる並列動作可能な競合処理を避けながら、リアルタイム処理を周期内に実施することが可能となる。
【実施例２】
【００４５】
図４は、実施例２に係るソフトウェアの構成例を示す図である。図４に示すソフトウェア２００ａは、実施例１のソフトウェア２００と同様に、図２に示す車載制御装置１で実行される。実施例１のソフトウェア２００に対し、本実施例のソフトウェア２００ａでは、調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）と、調停処理起動指示部２０５と、調停監視部２０６とをさらに備えることで、処理部２０４間での競合関係にある処理を調停処理部２０７として切り離し、競合を回避することが可能となる。
【００４６】
コアＣｏｒｅ０（１０１−０）では、監視部２０１、処理起動指示部２０２、優先処理部２０３−０、処理部２０４−０、調停処理起動指示部２０５、調停監視部２０６、および、調停処理部２０７−０が構成される。コアＣｏｒｅ０（１０１−０）以外の他のコアＣｏｒｅ１−ＣｏｒｅＮ（１０１−１、・・・、１０１−Ｎ）のおのおのでは、１つの優先処理部、１つの処理部、および、１つの調停処理部が構成される。つまり、コアＣｏｒｅ１（１０１−１）では、優先処理部２０３−１、処理部２０４−１、および、調停処理部２０７−１が構成される。コアＣｏｒｅＮ（１０１−Ｎ）では、優先処理部２０３−Ｎ、処理部２０４−Ｎ、および、調停処理部２０７−Ｎが構成される。
【００４７】
本実施例では、監視部２０１は優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）の終了を監視し、起動指示を調停処理起動指示部２０５に対して行う。
【００４８】
調停起動指示部２０５は、監視部２０１の起動指示を受け、各調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）の起動を行う。
【００４９】
調停監視部２０６は各調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）の処理が終了していることを監視する。監視方法として、調停処理部２０７は自身の処理が終了した際に通知情報を出し、調停監視部２０６は通知情報を参照することで調停処理部２０７が終了しているかを監視することができる。通知情報は、フラグや整数や文字列やその他変数として表現し、ＬｏｃａｌＲＡＭ１０２（１０２−０、１０２−１、・・・、１０２−Ｎ）やＧｌｏｂａｌＲＡＭ１０４に保存される。通知情報の連絡は本方法に限らない。調停監視部２０６はすべての調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）の終了を確認したとき、処理起動指示部２０２に対して起動指示を発行する。
【００５０】
処理起動指示部２０２は、実施例１と同様に、起動指示を受けると、各処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）を起動させる。
【００５１】
調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）は、処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）から競合データや競合関係にある処理を抽出し一部に集めたものである。例えば、入力データを調停処理部２０７として集約することで、処理部２０４は起動中に他コアや同コアで優先度の高い優先処理部２０３や処理部２０４が起動したとしても、競合関係にあるデータが調停処理部２０７で計算済みであればデータ競合を起こさずに計算を継続することができる。また、使用するデータを調停処理部２０７で他処理が扱うことのないローカルデータとして複製することによって、意図しないタイミングによる書き換えを防ぐことが可能となる。また、調停処理部２０７は処理部２０４に比べより少ない時間で処理を行うことが可能となり、調停処理部２０７起動時に制限される処理の起動開始を早めることができる。
【００５２】
調停処理部２０７は各コアにおける競合関係にある処理を、同じタイミングで動作している各コアの調停処理部２０７と協調しながら処理を解決していく。並列動作している各調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）は他のコアの調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）が競合データを処理している間、待機又は競合関係にないデータを処理することができる。
【００５３】
本実施例によれば、競合データが処理部２０４全体にわたって存在していた場合に、調停処理部２０７に分離し、処理部２０４の前に調停処理部２０７を起動することで、より短い競合回避のための各コアの待機時間で競合データの一貫性を保つことが可能となる。
【実施例３】
【００５４】
図５は、実施例３に係るソフトウェアの構成例を示す図である。図５に示すソフトウェア２００ｂは、実施例１のソフトウェア２００と同様に、図２に示す車載制御装置１で実行される。本実施例では、実施例２に加え、コア状態管理部２０８（２０８−０、２０８−１、・・・、２０８−Ｎ）を持つことで、複数の調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）や処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）の起動を監視し、起動指示を発行することが可能となる。
【００５５】
コアＣｏｒｅ０（１０１−０）では、監視部２０１、処理起動指示部２０２、優先処理部２０３−０、処理部２０４−０、調停処理起動指示部２０５、調停監視部２０６、調停処理部２０７−０、および、コア状態管理部２０８−０が構成される。コアＣｏｒｅ０（１０１−０）以外の他のコアＣｏｒｅ１−ＣｏｒｅＮ（１０１−１、・・・、１０１−Ｎ）のおのおのでは、１つの優先処理部、１つの処理部、１つの調停処理部、および、１つのコア状態管理部が構成される。つまり、コアＣｏｒｅ１（１０１−１）では、優先処理部２０３−１、処理部２０４−１、調停処理部２０７−１、および、コア状態管理部２０８−１が構成される。コアＣｏｒｅＮ（１０１−Ｎ）では、優先処理部２０３−Ｎ、処理部２０４−Ｎ、調停処理部２０７−Ｎ、および、コア状態管理部２０８−Ｎが構成される。
【００５６】
コア状態管理部２０８（２０８−０、２０８−１、・・・２０８−Ｎ）は、自身が起動するコア（１０１−０、１０１−１、・・・、１０１−Ｎ）の優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）や処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）や調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）の起動状態を監視し、コア（１０１−０、・・・、１０１−Ｎ）が動作可能な状態かどうかを監視する。監視方法として、各処理は自身が動作した際にコア状態管理部２０８（２０８−０、２０８−１、・・・、２０８−Ｎ）に起動中であることを通知する。通知方法は、フラグや整数や文字列等の変数で行う。その他にも、コア状態管理部２０８がもつ共通変数に加算し、終了時に減算することで、共通変数の値を見ることで処理が起動中か終了中かを判断することが可能となる。コア状態管理部２０８の監視方法は本実施例における記述に限定されず、コアで処理が動作可能な空き状態であることが判明する手法を利用可能である。
【００５７】
本実施例において、監視部２０１は各Ｃｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）において処理実行可能かを、各コア状態管理部２０８（２０８−０、２０８−１、・・・、２０８−Ｎ）を監視することによって判断することができる。監視部２０１は調停処理起動指示部２０５や処理起動指示部２０２に対して起動指示を発行する。
【００５８】
調停処理起動指示部２０５や処理起動指示部２０２は実施例１、実施例２と同様に調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）と処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）を起動する。
【００５９】
本実施例では、監視部２０１が調停処理起動指示部２０５と処理起動指示部２０２とに対して同じコア管理状態を用いて起動指示を出すことができる。これにより、複数の異なる処理部２０４と調停指示部２０７を、定められた順序で何度も起動し続けることが可能となり、より複雑な実行順序を持つソフトウェアのスケジューリングが可能となる。より複雑な実行順序を持つ複数の処理部２０４と調停指示部２０７のスケジューリングに対し、リアルタイム性の確保と、データ競合の回避による一貫性の確保の両立が可能となる。
【実施例４】
【００６０】
図６は、実施例４に係るソフトウェアの構成例を示す図である。図６に示すソフトウェア２００ｃは、実施例１のソフトウェア２００と同様に、図２に示す車載制御装置１で実行される。
【００６１】
図６示すソフトウェア２００ｃが実施例２のソフトウェア２００ａと異なる点は、各コアＣｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）がコア占有部２０９（２０９−０、２０９−１、・・・、２０９−Ｎ）を備えることで、確実に調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）を起動させることができるようになる点である。
【００６２】
本実施例では、複数のコアＣｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）にまたがるコア占有部２０９は特定の処理部２０４（２０４−０、２０４−１、・・・、２０４−Ｎ）の起動が必要なタイミングで、コア占有部２０９が起動する。
【００６３】
コア占有部２０９は、優先処理部２０３（２０３−０、２０３−１、・・・、２０３−Ｎ）よりも低い優先度で起動するが、一度起動すると指定の優先処理部２０３が割り込み起動することができないように、割り込み禁止やフラグによる優先処理の待機などの、待機指示を行う。コア占有部２０９の起動中に指定の優先処理２０３の起動が制限できるのであれば、上記以外の待機指示の実装でも良い。
【００６４】
コア占有部２０９（２０９−０、２０９−１、・・・、２０９−Ｎ）は自身が起動した際に、監視部２０１に起動通知を行う。起動通知は整数やフラグやその他変数でも良く、ＯＳＥｖｅｎｔなどの機能を使用してもよい。
【００６５】
監視部２０１は、起動指示を調停処理起動指示部２０５に対して行い、調停処理起動指示部２０５は起動指示を調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）に対して行う。
【００６６】
起動指示を受けた調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）は、同じコアＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）内にあるコア占有部２０９（２０９−０、２０９−１、・・・、２０９−Ｎ）の占有を引き継ぐことで調停処理を実施する。引継ぎ方法としていくつかの方法が考えられる。一つは、コア占有部２０９が調停処理部２０７の起動指示を監視し、調停処理部２０７の起動指示が発行されたタイミングで処理を停止する方法である。この時、調停処理部２０７がコア占有部２０９の終了よりも先に起動していたとしても、調停処理部２０７は優先度制御により、コア占有部２０９が終了するまで待機し、コア占有部２０９の終了後に起動することができる。このほかにも、同じ処理単位にコア占有部２０９と調停処理部２０７を配置しておき、調停処理部２０７の起動開始を無限ループなどで起動指示が出るまで待機することで、同様の効果を実現できる。処理単位とは関数や、タスクや、スレッドやプロセスなどの、一連の手続きが逐次実行されるものを指す。
【００６７】
本実施例によれば、コア占有部２０９が起動後は、優先処理２０３等の処理が割り込むことを制限することで、調停処理部２０７の起動までの間に別の優先度処理が割り込んだ結果すべてのコアＣｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）の調停処理部２０７の起動を制限されてしまうケースを避けることができる。
【００６８】
調停処理部２０７の起動が制限されてしまうと、各コアＣｏｒｅ０−ＣｏｒｅＮでの処理部２０４の起動が遅れてしまい、制御ソフトウェア２００ｃのリアルタイム性を損なう恐れがある。
【００６９】
また、本実施例により、コアＣｏｒｅ０−ＣｏｒｅＮ間での調停処理部２０７及び処理部２０４の起動がされなくなるリスクを軽減させることが可能となる。
【実施例５】
【００７０】
本実施例では、実施例４の構成に加え、各調停処理部２０７（２０７−０、２０７−１、・・・、２０７−Ｎ）を複数の単位に分割して、複数のサブ調停処理部を構成する。監視部２０１はコア状態を調停処理起動指示部２０５に通知し、調停処理起動指示部２０５はコア状態に応じて複数のサブ調停処理部を起動させる。図７は、実施例５に係る調停処理部の構成例を示す表である。図７には、本実施例における調停処理部２０７を分割した後の調停部分割テーブル４００が示されている。
【００７１】
本実施例における調停部分割テーブル４００は、参照Ｎｏ４０１と、送信コア情報４０２と、受信コア情報４０３と、起動フラグ４０４と、で構成される。
【００７２】
参照Ｎｏ４０１は、調停部分割テーブル４００の各行を一意に識別するために使用する。整数や小数や文字列やその他識別情報に使用可能な値を用いて表現する。調停部分割テーブル４００の各行が、複数のサブ調停処理部のそれぞれに対応する。
【００７３】
送信コア情報４０２は、Ｃｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）から一つ以上を選択し、記載する。値はＣｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）が一意に識別可能な整数や小数や文字列やその他識別情報に使用可能な値を使用する。
【００７４】
受信コア情報４０３は、Ｃｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）から一つ以上を選択し、記載する。値はＣｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）が一意に識別可能な整数や小数や文字列やその他識別情報に使用可能な値を使用する。
【００７５】
起動フラグ４０４は、最低限Ｃｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）が休止中かが判別可能な値を使用する。図７では、ＴＲＵＥかＦＡＬＳＥかのＢｏｏｌｅａｎ型で表現しており、ＴＲＵＥがＣｏｒｅ１０１で目的の処理が起動している状態、ＦＡＬＳＥはＣｏｒｅ１０１にどのような処理も起動していない状態を表す。起動フラグ４０４は２値に制限するものではなく、起動中の処理が一意に識別可能な整数や小数や文字列やその他識別情報に使用可能な値を使用してもよい。
【００７６】
図８は、実施例５に係るソフトウェアの処理を示すフローチャート図である。以下、図８を用いて、ソフトウェアの調停処理のふるまいを説明する。
【００７７】
ソフトウェアの処理は、監視部２０１において、ＳＴＡＲＴ３０１から始まる。
【００７８】
次に、監視部２０１は参照Ｎｏ初期化３０２を実施し、現在参照Ｎｏ４０１の値を初期化する。初期化する値は、調停部分割テーブル４００に含まれる参照Ｎｏ４０１の値から任意の値を使用する。
【００７９】
次に、空きコア情報更新３０３において、実施例４における監視部２０１の各Ｃｏｒｅ０−ＣｏｒｅＮ（１０１−０、１０１−１、・・・、１０１−Ｎ）が起動中かの監視を行う。
【００８０】
次に、調停部分割テーブルから参照Ｎｏ行抽出３０４において、現在参照Ｎｏを持つ、調停部分割テーブル４００の行を抽出し、参照中行情報として保持する。
【００８１】
次に、空きコア確認３０５において、抽出した参照中行情報の送信コア情報４０２と、受信コア情報４０３と、が空きコアであるかを評価する。
送信コア情報４０２の値であるＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）が空きコアでないとき（ｎｏ）、参照Ｎｏ変更３１０を実施する。
受信コア情報４０３の値であるＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）が空きコアでないとき（ｎｏ）、参照Ｎｏ変更３１０を実施する。
送信コア情報４０２の値であるＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）、および、受信コア情報４０３の値であるＣｏｒｅ（１０１−０、１０１−１、・・・、１０１−Ｎ）が空きコアのとき（ｙｅｓ）、起動フラグ確認３０６へ移行する。
【００８２】
次に、起動フラグ確認３０６において、参照中行情報の起動中フラグ４０４を参照する。起動中フラグ４０４がＦＡＬＳＥである場合（ｙｅｓ）、参照Ｎｏ調停部起動処理３０７を実施する。起動中フラグ４０４がＴＲＵＥである場合（ｎｏ）、参照Ｎｏ変更３１０を実施する。
【００８３】
次に、参照Ｎｏ調停部起動処理３０７において、調停処理起動指示部２０５は参照中行情報に記載の調停処理部２０７の分割された一部を起動する。
【００８４】
次に、参照Ｎｏ行起動フラグ更新３０８において、参照中行情報の起動フラグ４０４をＦＡＬＳＥからＴＲＵＥへと更新する。
【００８５】
次に、起動フラグ確認３０９において、調停部分割テーブル４００すべての行で起動フラグ４０４がＴＲＵＥになっているかを評価する。
全ての起動フラグがＴＲＵＥになっている場合（ｙｅｓ）、起動フラグ初期化処理３１１を実施する。
全ての起動フラグがＴＲＵＥになっていない場合（ｎｏ）、参照Ｎｏ変更３１０を実施する。
【００８６】
参照Ｎｏ変更３１０では、現在参照Ｎｏの値を変更する。例えば、参照Ｎｏ４０１の値が整数の場合は１を加算するなどする。ここで、現在参照Ｎｏとして取りうる値は調停部分割テーブル４００の参照Ｎｏ４０１に存在する値を使用する。
【００８７】
起動フラグ初期化処理３１１では、調停部分割テーブル４００の起動フラグ４０４を初期化する。本実施例においては、調停部分割テーブル４００の全ての行に対して起動フラグ４０４をＦＡＬＳＥにすることを指す。状況に応じて、ＦＡＬＳＥにする行を選択してもよく、又は他の値を初期値としてもよい。
【００８８】
ＥＮＤ３１２で本実施例における監視部２０１及び調停処理起動指示部２０５の調停処理のふるまいを終える。
【００８９】
調停処理起動指示部２０５の調停処理の終了の後、調停監視部２０６は各調停処理部２０７の動作が終了したことを監視し、処理起動指示部２０２への起動指示を発行する。
【００９０】
もしくは、調停処理起動指示部２０５の終了の後、すぐに調停監視部２０６が処理起動指示部２０２への起動指示を発行する。これは、調停処理部２０７が送信コア情報４０２と受信コア情報４０３とに分割されたことで、処理部２０４の起動時に他のＣｏｒｅ１０１で起動中の競合関係にある調停処理部２０７が起動されていないことが保証されるためである。
【００９１】
本実施例において、処理起動指示部２０２が処理部２０４を起動する状態になったときに、競合関係にある調停処理部２０７は、その動作を終了していることが保証される。
【００９２】
また、いくつかのＣｏｒｅ１０１が優先処理部２０３によって占有されていたとしても、占有されていないＣｏｒｅ１０１に割り当てられた分割後の調停処理部２０７が起動できる。一部の調停処理部２０７を先行して起動することができるため、処理を高速化することができる。
【００９３】
実施例５によれば、調停処理部２０７の処理の一部を先行して開始でき、また処理の一部を先行して終了し一部の処理部２０４の起動を早めることができ、全体のＣＰＵ利用率を改善することができる。
【実施例６】
【００９４】
図９は、実施例６に係る調停処理部の構成例を示す表である。図９には、実施例６に係る調停部分割テーブル４００ａが示されている。調停部分割テーブル４００ａは、実施例５の調停部分割テーブル４００に、優先度レベルＬｖ情報４０５が追加されている。調停部分割テーブル４００ａでは、優先度レベルＬｖ情報４０５に応じて調停処理部２０７への起動指示方法を切り替える。優先度レベルＬｖ情報４０５は、起動優先度とみなすことができる。
【００９５】
優先度レベルＬｖ情報４０５は、数字や文字列などで表現し、異なる優先度レベルＬｖ情報間で優先度が判断できる値であればよい。優先度レベルＬｖ情報４０５は、いくつかの行で重複してもよく、重複した優先度レベルＬｖ情報４０５を持つ行は同じ優先度を持ち、どちらが先に起動されてもよいことを表す。
【００９６】
本実施例における優先度レベルＬｖ情報４０５毎の指示方法切り替えを示す。
【００９７】
ここで、優先度レベルＬｖ＝１を最高優先度、優先度レベルＬｖ＝３を最低優先度とし、優先度レベルＬｖ＝１、優先度レベルＬｖ＝２、優先度レベルＬｖ＝３の３つの優先度レベルＬｖに分割する。
【００９８】
まず、優先度レベルＬｖ＝１の優先度レベルＬｖ情報４０５を持つ行のみを抽出し、抽出済み調停部分割テーブルＡとする。
【００９９】
次に、抽出済み調停部分割テーブルＡを調停部分割テーブルとして、図８に示すフローチャートを実施する。フローチャート終了後、処理起動指示部２０２への起動指示は行わない。
【０１００】
この段階で、調停処理部２０７の起動が許される一定時間が経過していた場合、以降の優先度レベルＬｖの処理を断念し、処理起動指示部２０２への起動指示を行う。
【０１０１】
次に、優先度レベルＬｖ＝２の優先度レベルＬｖ情報４０５を持つ行のみを抽出し、抽出済み調停部分割テーブルＢとする。
【０１０２】
次に、抽出済み調停部分割テーブルＢを調停部分割テーブルとして、図８に示すフローチャートを実施する。フローチャート終了後、処理起動指示部２０２への起動指示は行わない。
【０１０３】
この段階で、調停処理部２０７の起動が許される一定時間が経過していた場合、以降の優先度レベルＬｖの処理を断念し、処理起動指示部２０２への起動指示を行う。
【０１０４】
最後に、優先度レベルＬｖ＝３の優先度レベルＬｖ情報４０５を持つ行のみを抽出し、抽出済み調停部分割テーブルＣとする。
【０１０５】
次に、抽出済み調停部分割テーブルＣを調停部分割テーブルとして、図８に示すフローチャートを実施する。フローチャート終了後、処理起動指示部２０２への起動指示を開始する。
【０１０６】
本実施例では、優先レベルＬｖ毎に調停処理部２０７を分割することで、ＣＰＵ利用率が高い場合であっても競合を回避しながら必要最小限の調停処理のみを実施することで、リアルタイム性を維持しながら制御を計算することが可能となる。
【実施例７】
【０１０７】
本実施例では、実施例６の指示方法切り替えに関する異なる実施方法を示す。
【０１０８】
本実施例における優先度レベルＬｖ情報４０５毎の指示方法切り替えを示す。優先度レベルＬｖ＝１を最高優先度、優先度レベルＬｖ＝３を最低優先度とし、優先度レベルＬｖ＝１、優先度レベルＬｖ＝２、優先度レベルＬｖ＝３の３つの優先度レベルＬｖに分割する。
【０１０９】
まず、優先度レベルＬｖ＝１の優先度レベルＬｖ情報４０５を持つ行のみを抽出し、最優先調停部分割テーブルとする。
【０１１０】
最優先調停部分割テーブル記載の処理は、優先処理部２０３に優先して処理を実施する。そのため、調停処理起動指示部２０５は監視部２０１の指示を待たず調停処理部２０７への起動指示を行う。
【０１１１】
次に、優先度レベルＬｖ＝２の優先度レベルＬｖ情報４０５を持つ行のみを抽出し、抽出済み調停部分割テーブルＤとする。
【０１１２】
次に、抽出済み調停部分割テーブルＤを調停部分割テーブルとして、図８に示すフローチャートを実施する。フローチャート終了後、処理起動指示部２０２への起動指示は行わない。
【０１１３】
この段階で、調停処理部２０７の起動が許される一定時間が経過していた場合、処理起動指示部２０２への起動指示を行う。
【０１１４】
最後に、優先度レベルＬｖ＝３の優先度レベルＬｖ情報４０５を持つ行のみを抽出し、抽出済み調停部分割テーブルＥとする。
【０１１５】
次に、抽出済み調停部分割テーブルＥを調停部分割テーブルとして、調停処理起動指示部２０５への起動指示を開始する。
【０１１６】
優先度レベルＬｖ＝３の調停処理部２０７は、優先度を処理部２０４よりも低く設定することで、処理部２０４の終了後に調停処理を起動するように設定する。
【０１１７】
本実施例では、最高優先度の優先度レベルＬｖ＝１の調停処理部２０７を優先処理部２０３よりも高優先で起動することで、必要最小限の重要データの更新のリアルタイム性を維持した上で、更に、最低優先度の優先度レベルＬｖ＝３の調停処理部２０７が処理部２０４の終了の直後に起動する。これにより、実施例６では最悪更新されない恐れがあった一部の調停処理部２０７が起動されるため、最小限の遅延でデータ更新が可能となり、ある程度のリアルタイム性維持が可能となる。
【０１１８】
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
【符号の説明】
【０１１９】
１  車載制御装置、２  車載ネットワーク、３  センサ、４  アクチュエータ、１０１  Ｃｏｒｅ、１０２  ＬｏｃａｌＲＡＭ、１０３  ＬｏｃａｌＲＯＭ、１０４  ＧｌｏｂａｌＲＡＭ、１０５  入出力ＩＦ、１０６  通信ＩＦ、１０７  不揮発性メモリ、１０８  バス、２０１  監視部、２０２  処理起動指示部、２０３  優先処理部、２０４  処理部、２０５  調停処理起動指示部、２０６  調停監視部、２０７  調停処理部、２０８  コア状態管理部、２０９  コア占有部、３０１  ＳＴＡＲＴ、３０２  参照Ｎｏ初期化、３０３  空きコア情報更新、３０４  参照Ｎｏ行抽出、３０５  空きコア確認、３０６  起動フラグ確認、３０７  参照Ｎｏ調停部起動処理、３０８  起動フラグ変更、３０９  起動フラグ確認、３１０  参照Ｎｏ変更、３１１  起動フラグ初期化処理、３１２  ＥＮＤ、４０１  参照Ｎｏ、４０２  送信コア情報、４０３  受信コア情報、４０４  起動中フラグ、４０５  優先レベルＬｖ情報。
【図１】
2022002015.tif 000003
【図２】
2022002015.tif 000004
【図３】
2022002015.tif 000005
【図４】
2022002015.tif 000006
【図５】
2022002015.tif 000007
【図６】
2022002015.tif 000008
【図７】
2022002015.tif 000009
【図８】
2022002015.tif 000010
【図９】
2022002015.tif 000011