JP7514119B2 - 車載制御装置 - Google Patents

車載制御装置 Download PDF

Info

Publication number
JP7514119B2
JP7514119B2 JP2020106674A JP2020106674A JP7514119B2 JP 7514119 B2 JP7514119 B2 JP 7514119B2 JP 2020106674 A JP2020106674 A JP 2020106674A JP 2020106674 A JP2020106674 A JP 2020106674A JP 7514119 B2 JP7514119 B2 JP 7514119B2
Authority
JP
Japan
Prior art keywords
arbitration
unit
core
processing
processing units
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020106674A
Other languages
English (en)
Other versions
JP2022002015A (ja
Inventor
隆博 飯田
徹 入江
雄介 阿部
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Astemo Ltd
Original Assignee
Hitachi Astemo Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Astemo Ltd filed Critical Hitachi Astemo Ltd
Priority to JP2020106674A priority Critical patent/JP7514119B2/ja
Publication of JP2022002015A publication Critical patent/JP2022002015A/ja
Application granted granted Critical
Publication of JP7514119B2 publication Critical patent/JP7514119B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Description

本発明は、車載制御装置に関し、複数のCPUコア(マルチコア)を有する半導体装置を含む車載制御装置に適用して有効な技術に関し、特に、マルチコアにおける並列ソフトウェアの性能向上と一貫性保証を実現する技術に適用可能である。
車載制御装置には、複数のCPUコアを有するマイクロコントローラ等の半導体装置が採用されるようになってきた。CPUコアのマルチコア化により、車載制御装置に採用されるソフトウェア構造が複雑化している。複数機能が並列に動作する場合のデータ競合解決が問題であり、ソフトウェア設計の難しさの原因となっている。
処理タイミングをなるべく静的に設計することで、ソフトウェア設計の複雑さを解消する技術が議論されている。時分割スケジューリングでは、CPUの実行時間を一定区間に区切り(タイムスロット)、タイムスロット単位で処理を切り替える。割り込みなどの概念も、高優先度かつ小さめのタイムスロットの定義で実現する。
LET(Logical Execution Time)では、各処理にLETを割り当てる。処理を入力・計算・出力に分ける。例えばLET = 5msの処理の場合、早めに処理が終わったとしても、開始から5ms立つまでは出力処理を実施しない。
これらの思想を実現することでリアルタイム性の維持と設計の容易さを両立できる。これら技術の導入にあたり、並列ソフトウェアとしては、同時並列に処理されるデータの一貫性保証ないし一貫性確保が重要である。
特開2013-152636号公報
特許文献1によると、同時期に実行される複数の処理が競合する場合、より優先度の低い処理の実行をあきらめ、より優先度の高い処理を行い、あきらめた処理は再度スケジューリングすることで処理を継続するとある。
しかしながら、制御や指令値計算のリアルタイム制が重要となる車載制御装置及びそのソフトウェアでは、競合処理をあきらめることにより連続値の抜けや遅延が発生し、かえって制御が不安定になる恐れがある。
本発明の課題は、リアルタイム性が必要な車載制御装置において、競合処理の実行タイミングをずらすことでリアルタイム性を実現した上で処理の競合を回避する技術を提供することにある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
一実施の形態に係る車載制御装置は、複数のコアと、各コアに対応して設けられ、一定条件で起動する複数の処理部と、各コアに対応して設けられ、前記複数の処理部と同時に起動していた場合、優先的に処理される複数の優先処理部と、前記複数の優先処理部が動作していないことを監視する監視部と、前記監視部から指示で各コアの前記処理部を起動する起動指示部と、を備える。
上記車載制御装置によれば、リアルタイム性を維持しつつ、競合を回避することが可能となる。
図1は、本発明の対象となる車載システムの全体的な構成例を示す図である。 図2は、図1の車載制御装置の構成例を説明する図である。 図3は、実施例1に係るソフトウェアの構成例を示す図である。 図4は、実施例2に係るソフトウェアの構成例を示す図である。 図5は、実施例3に係るソフトウェアの構成例を示す図である。 図6は、実施例4に係るソフトウェアの構成例を示す図である。 図7は、実施例5に係る調停処理部の構成例を示す表である。 図8は、実施例5に係るソフトウェアの処理を示すフローチャート図である。 図9は、実施例6に係る調停処理部の構成例を示す表である。
以下、実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。なお、図面は説明をより明確にするため、実際の態様に比べ、模式的に表される場合があるが、あくまで一例であって、本発明の解釈を限定するものではない。
本実施例において、車載制御装置1は監視部201及び処理起動指示部202を備える(図3参照)。これにより、各コアにおいて、競合処理の実行タイミングをずらすことで、車載制御装置1はリアルタイム性を実現した上で処理の競合を回避することができる。
(車載システムの全体的な構成例)
ます、本発明の対象となる車載システムについて、図1を用いて説明する。図1は、本発明の対象となる車載システムの全体的な構成例を示す図である。車載システムSYSは複数の車載制御装置1と、複数の車載ネットワーク2と、複数のセンサ3と、複数のアクチュエータ4とを備える。
車載制御装置1は車載ネットワーク2に接続され、車載ネットワーク2に対して通信データを送信することで、車載制御装置1間のデータ交換が実現される。車載制御装置1は、センサ3から得たデータを元に制御指令値を計算し、アクチュエータ4への指令や、他の制御指令装置(不図示)への通信データを作成する。
車載ネットワーク2はCAN(Control Area network)やEtherNetやその他通信プロトコルで実現される。車載ネットワーク2は有線だけでなく無線等その他通信手段で実現される。
センサ3は、角度センサや速度センサ、ブレーキ圧などの圧力を検知する圧力センサやカメラやLadarやLidarなどの外界を検知するための検知装置や、スイッチ等の外界や人間の操作やその他車両に加わる物理的な情報をデジタルデータ又はアナログデータとして車載制御装置1に通知する。
アクチュエータ4は、エンジンやモータやブレーキや、その他電磁弁といった車両の挙動に影響するものや、カーナビやメータやブザーやランプなどといった運転手や車両の周りにいるものに情報を知らせるものや、ブレーキペダルやアクセルへの反発やシートベルトやハンドル等運転手や乗車者の安全性や操作装置など、制御信号によって動作させることができるすべての装置を指す。
車載制御装置1は、センサ3からの入力と他の車載制御装置1からの通信データを元に制御指令値を計算し、他の車載制御装置1にデータを転送し、アクチュエータへ制御指令値を伝えることで車両を動作させ、運転手や乗車者に車両の機能を提供する。
(車載制御装置の構成例)
図2は、図1の車載制御装置の構成例を説明する図である。車載制御装置1は、ソフトウェアの処理を行う複数のコア(Core0、Core1、・・・、CoreN)101(101-0、101-1、・・・、101-N)と、グローバルRAM(GlobalRAM)104と、入出力インターフェイス(入出力IF)105と通信インターフェイス(通信IF)106と不揮発性メモリ107と、バス108と、を含む。各回路(101-0、101-1、・・・、101-N、104、105、106、107)がバス108によって相互に接続されている。各コア101(101-0、101-1、・・・、101-N)は0個以上のローカルRAM(LocalRAM)102(102-0、102-1、・・・、102-N)と0個以上のローカルROM(LocalROM)103(103-0、103-1、・・・、103-N)とを有し、各コア101(101-0、101-1、・・・、101-N)とローカルRAM102(102-0、102-1、・・・、102-N)とローカルROM103(103-0、103-1、・・・、103-N)は、バス108に接続されている。車載制御装置1は、たとえば、複数の中央処理装置(CPUコア)を有するマイクロコントローラ等の半導体装置を用いて構成することができる。ここで、複数の中央処理装置(CPUコア)は、複数のコア(Core0、Core1、・・・、CoreN)101(101-0、101-1、・・・、101-N)に相当する。
LocalRAM102(102-0、102-1、・・・、102-N)は、ソフトウェアが計算する際に使用するデータが格納される。LocalRAM102へのデータアクセスはLocalRAM102を保有するコアは読み書きが可能である。他コアから読み書きできる場合もある。他コアから読み書きする場合、その処理速度は自コア101から読み書きするのに比べて低速である。つまり、LocalRAM102-0を例として説明すると、LocalRAM102-0を保有するコア101-0は、LocalRAM102-0の読み書きが可能である。また、LocalRAM102-0は、他のコア(101-1、・・・、101-N)から読み書きできる場合もある。他コア(101-1、・・・、101-N)からLocalRAM102-0を読み書きする場合、その処理速度は自コアであるコア101-0から読み書きするのに比べて低速である。
LocalROM103(103-0、103-1、・・・、103-N)は、ソフトウェアが計算する際に使用するプログラムが格納される。データを格納することも可能である。LocalROM103へのアクセスはLocalROM103を保有するコアは読み書きが可能である。他コアから読み書きできる場合もある。他コアから読み書きする場合、その処理速度は自コアから読み書きするのに比べて低速である。つまり、LocalROM103-0を例として説明すると、LocalROM103-0を保有するコア101-0は、LocalROM103-0の読み書きが可能である。また、LocalROM103-0は、他のコア(101-1、・・・、101-N)から読み書きできる場合もある。他コア(101-1、・・・、101-N)からLocalROM103-0を読み書きする場合、その処理速度は自コアであるコア101-0から読み書きするのに比べて低速である。LocalROM103は、たとえば、電気的に書込みおよび消去が可能なフラッシュメモリやEEPROM(Electrically Erasable Programmable Read-Only Memory)等を利用することができる。
GlobalRAM104は、ソフトウェアが計算する際に使用するデータが格納される。GlobalRAM104へのデータアクセスはすべてのコア101(101-0、101-1、・・・、101-N)から読み書きが可能である。LocalRAM102に比べ、GlobalRAM104への読み書きは低速であることが多い。また、GlobalRAM104はLocalRAM102に比べ格納可能なデータ量が多いことがある。LocalRAM102やGlobalRAM104は、たとえば、揮発性メモリであるスタチックランダムアクセルメモリ(SRAM: Static Random Access Memory)やダイナミックランダムアクセルメモリ(DRAM: Dynamic Random Access Memory)等を利用することができる。
入出力IF105は、センサ3からのデータ入力を受け付け、また他の構成要素から受け付けたデータをアクチュエータ4へと出力する。
通信IF106は通信ネットワーク2につながる。通信ネットワーク2から受信したデータを各構成要素が参照可能な状態にする。また、各構成要素から受領したデータを通信ネットワーク2に送信する。
不揮発性メモリ107は、車載制御装置1の電源がOFFになった後もデータを保持し続けることができる。電源OFF前のソフトウェア状態を保持し、車両ごとの制御指令値の初期値や固定値を保存することが可能である。不揮発性メモリ107は、たとえば、電気的に書込みおよび消去が可能なフラッシュメモリやEEPROM(Electrically Erasable Programmable Read-Only Memory)等を利用することができる。
車載制御装置1では、センサ3で得られた値を入出力IF105で取得し、各Core(101-0、101-1、・・・、101-N)が参照可能な状態にする。また、通信IF106は通信ネットワーク2からデータを入手して、各Core(101-0、101-1、・・・、101-N)が参照可能な状態にする。これら参照可能なデータを入力データとして各Core(101-0、101-1、・・・、101-N)は、処理を行う。
各Core(101-0、101-1、・・・、101-N)は入力データと、不揮発性メモリ107に格納されていたデータと、LocalRAM(102-0、102-1、・・・、102-N)に保持しているデータや、GlobalRAM104に保持しているデータを用いて、LocalROM(103-0、103-1、・・・、103-N)に保持しているプログラムに従い、処理を行う。処理途中の一時データはLocalRAM(102-0、102-1、・・・、102-N)や、GlobalRAM104に保持する。処理結果の一部はLocalRAM(102-0、102-1、・・・、102-N)や、GlobalRAM104に保持することで、他Core(101-0、101-1、・・・、101-N)や、次の処理時に利用可能とする。処理結果の一部は、入出力IF105や通信IF106から参照可能な出力データにする。処理結果の一部は、不揮発性メモリ107に書き込まれ、保持される。不揮発性メモリ107に書き込まれた処理結果は、電源OFF後も保持され、次の電源ON時に各Core(101-0、101-1、・・・、101-N)によって利用される。
この時、複数のCore(101-0、101-1、・・・、101-N)がLocalRAM(102-0、102-1、・・・、102-N)に保持しているデータや、GlobalRAM104に保持しているデータに対してアクセスするような場合に、意図しないタイミングでの読み書きが行われることをデータ競合と呼ぶ。ここで、意図しないタイミングとは、たとえば、あるCore101が書き込んだ、あるLocalRAM(102-0、102-1、・・・、102-N)に保持している計算経過のデータや、GlobalRAM104に保持している計算経過のデータを、引き続きあるCore101で使用する場合に、計算結果が出る前のタイミングを指す。
この時のデータは、単一の整数や小数や文字列やフラグなどの変数や、複数の変数をセットとしたデータセットや、そのほかのデータ保持方法で表せられる。
また、計算経過に限らず、計算前であったとしても、本来意図したタイミングのデータを書き換えられてしまうケースもデータ競合という。ここで、本来意図したタイミングとは、例えば、1周期に1度参照されるデータに対して、一定周期毎に更新されるタイミングを示す。
入出力IF105によって参照可能な状態である出力データは、入出力IF105によってアクチュエータ4に通知される。アクチュエータ4は出力データに対して設計された又は定められた動作を行う。通信IF106によって参照可能な状態である出力データは、通信IF106によって通信ネットワーク2に対して出力される。必要に応じて通信IF106は参照した出力データを通信ネットワーク2に送信可能な形に変換する。
このようなデータ競合がある処理同士を競合関係にあるとする。
(ソフトウェアの構成例)
図3は、実施例1に係るソフトウェアの構成例を示す図である。図3に示すソフトウェア200は車載制御装置1で実行される。本ソフトウェア200は、監視部201と、処理起動指示部202と、複数の優先処理部203(203-0、203-1、・・・、203-N)と、複数の処理部204(204-0、204-1、・・・、204-N)と、により構成される。コアCore0(101-0)では、監視部201、処理起動指示部202、優先処理部203-0、および、処理部204-0が構成される。コアCore0(101-0)以外の他のコアCore1-CoreN(101-1、・・・、101-N)のおのおのでは、1つの優先処理部、および、1つの処理部が構成される。つまり、コアCore1(101-1)では、優先処理部203-1、および、処理部204-1が構成される。コアCoreN(101-N)では、優先処理部203-N、および、処理部204-Nが構成される。
優先処理部203(203-0、203-1、・・・、203-N)は、処理部204(204-0、204-1、・・・、204-N)よりも優先が高く設定された処理である。優先処理部203の起動中は、同じコアCore101内の処理部204が動作することができず、もし同じコアCore101内の処理部204の起動処理が実施されれば、同じコアCore101内の優先処理部203が終了するまで処理部204は起動待機することになる。処理部204は、一定の条件で起動するということができる。
処理部204(204-0、204-1、・・・、204-N)は、処理起動指示部202の指令を待って処理を起動する。
処理部204(204-0、204-1、・・・、204-N)や優先処理部203(203-0、203-1、・・・、203-N)は、不揮発性メモリ107に格納されていたデータと、LocalRAM102(102-0、102-1、・・・、102-N)に保持しているデータや、GlobalRAM104に保持しているデータを用いて、LocalROM103(103-0、103-1、・・・、103-N)に保持しているプログラムに従い、処理を行う。処理途中の一時データはLocalRAM102(102-0、102-1、・・・、102-N)や、GlobalRAM104に保持する。処理結果の一部はLocalRAM102(102-0、102-1、・・・、102-N)や、GlobalRAM104に保持することで、他のコアCore(101-0、101-1、・・・、101-N)や、次の処理時に利用可能とする。処理結果の別の一部は、入出力IF105や通信IF106から参照可能な出力データとして出力する。
監視部201は、優先処理部203(203-0、203-1、・・・、203-N)の起動状況を監視し、処理起動指示部202に起動指示を行う。監視部201は、各コア(101-0、101-1、・・・、101-N)の優先処理部203が終了しているか否かを監視しており、全ての優先処理部203(203-0、203-1、・・・、203-N)の動作が停止したとき、監視部201は、処理起動指示部202に対して起動指示を通知する。起動指示は、フラグや整数やその他ソフトウェア上で表せるデータを用いる。
処理起動指示部202は、監視部201からの起動指示を元に、処理部204(204-0、204-1、・・・、204-N)に対して起動を指示する。つまり、処理起動指示部202は、優先処理部203が起動しないように制御するコア占有処理を実施し、コア占有処理の終了後、複数の処理部204を起動させる。
起動方法は、OperatingSytem(以下OS)の機能である、OSEventによる起動方法がある。各処理は、対応するOSEventを設定する。任意の処理が任意のOSEventを発行することができる。OSはOSEventが発行されると対応する処理を起動させる。起動した処理は、優先度などのOSのスケジューリング方法により起動される。また、起動方法は上記に限らず処理起動指示部から処理を起動させることができる手段であれば実現方法は問わない。
実施例1によれば、処理部204(204-0、204-1、・・・、204-N)が優先処理部203(203-0、203-1、・・・、203-N)と競合関係にある時、監視部201は優先処理部203が起動していない状況で起動指示を行い、かつ処理起動指示部202が処理部204(204-0、204-1、・・・、204-N)に対して起動処理を行うことで、一度に処理部204(204-0、204-1、・・・、204-N)が動作可能となる。本実施例により、各コア101(101-0、101-1、・・・、101-N)にまたがる並列動作可能な競合処理を避けながら、リアルタイム処理を周期内に実施することが可能となる。
図4は、実施例2に係るソフトウェアの構成例を示す図である。図4に示すソフトウェア200aは、実施例1のソフトウェア200と同様に、図2に示す車載制御装置1で実行される。実施例1のソフトウェア200に対し、本実施例のソフトウェア200aでは、調停処理部207(207-0、207-1、・・・、207-N)と、調停処理起動指示部205と、調停監視部206とをさらに備えることで、処理部204間での競合関係にある処理を調停処理部207として切り離し、競合を回避することが可能となる。
コアCore0(101-0)では、監視部201、処理起動指示部202、優先処理部203-0、処理部204-0、調停処理起動指示部205、調停監視部206、および、調停処理部207-0が構成される。コアCore0(101-0)以外の他のコアCore1-CoreN(101-1、・・・、101-N)のおのおのでは、1つの優先処理部、1つの処理部、および、1つの調停処理部が構成される。つまり、コアCore1(101-1)では、優先処理部203-1、処理部204-1、および、調停処理部207-1が構成される。コアCoreN(101-N)では、優先処理部203-N、処理部204-N、および、調停処理部207-Nが構成される。
本実施例では、監視部201は優先処理部203(203-0、203-1、・・・、203-N)の終了を監視し、起動指示を調停処理起動指示部205に対して行う。
調停起動指示部205は、監視部201の起動指示を受け、各調停処理部207(207-0、207-1、・・・、207-N)の起動を行う。
調停監視部206は各調停処理部207(207-0、207-1、・・・、207-N)の処理が終了していることを監視する。監視方法として、調停処理部207は自身の処理が終了した際に通知情報を出し、調停監視部206は通知情報を参照することで調停処理部207が終了しているかを監視することができる。通知情報は、フラグや整数や文字列やその他変数として表現し、LocalRAM102(102-0、102-1、・・・、102-N)やGlobalRAM104に保存される。通知情報の連絡は本方法に限らない。調停監視部206はすべての調停処理部207(207-0、207-1、・・・、207-N)の終了を確認したとき、処理起動指示部202に対して起動指示を発行する。
処理起動指示部202は、実施例1と同様に、起動指示を受けると、各処理部204(204-0、204-1、・・・、204-N)を起動させる。
調停処理部207(207-0、207-1、・・・、207-N)は、処理部204(204-0、204-1、・・・、204-N)から競合データや競合関係にある処理を抽出し一部に集めたものである。例えば、入力データを調停処理部207として集約することで、処理部204は起動中に他コアや同コアで優先度の高い優先処理部203や処理部204が起動したとしても、競合関係にあるデータが調停処理部207で計算済みであればデータ競合を起こさずに計算を継続することができる。また、使用するデータを調停処理部207で他処理が扱うことのないローカルデータとして複製することによって、意図しないタイミングによる書き換えを防ぐことが可能となる。また、調停処理部207は処理部204に比べより少ない時間で処理を行うことが可能となり、調停処理部207起動時に制限される処理の起動開始を早めることができる。
調停処理部207は各コアにおける競合関係にある処理を、同じタイミングで動作している各コアの調停処理部207と協調しながら処理を解決していく。並列動作している各調停処理部207(207-0、207-1、・・・、207-N)は他のコアの調停処理部207(207-0、207-1、・・・、207-N)が競合データを処理している間、待機又は競合関係にないデータを処理することができる。
本実施例によれば、競合データが処理部204全体にわたって存在していた場合に、調停処理部207に分離し、処理部204の前に調停処理部207を起動することで、より短い競合回避のための各コアの待機時間で競合データの一貫性を保つことが可能となる。
図5は、実施例3に係るソフトウェアの構成例を示す図である。図5に示すソフトウェア200bは、実施例1のソフトウェア200と同様に、図2に示す車載制御装置1で実行される。本実施例では、実施例2に加え、コア状態管理部208(208-0、208-1、・・・、208-N)を持つことで、複数の調停処理部207(207-0、207-1、・・・、207-N)や処理部204(204-0、204-1、・・・、204-N)の起動を監視し、起動指示を発行することが可能となる。
コアCore0(101-0)では、監視部201、処理起動指示部202、優先処理部203-0、処理部204-0、調停処理起動指示部205、調停監視部206、調停処理部207-0、および、コア状態管理部208-0が構成される。コアCore0(101-0)以外の他のコアCore1-CoreN(101-1、・・・、101-N)のおのおのでは、1つの優先処理部、1つの処理部、1つの調停処理部、および、1つのコア状態管理部が構成される。つまり、コアCore1(101-1)では、優先処理部203-1、処理部204-1、調停処理部207-1、および、コア状態管理部208-1が構成される。コアCoreN(101-N)では、優先処理部203-N、処理部204-N、調停処理部207-N、および、コア状態管理部208-Nが構成される。
コア状態管理部208(208-0、208-1、・・・208-N)は、自身が起動するコア(101-0、101-1、・・・、101-N)の優先処理部203(203-0、203-1、・・・、203-N)や処理部204(204-0、204-1、・・・、204-N)や調停処理部207(207-0、207-1、・・・、207-N)の起動状態を監視し、コア(101-0、・・・、101-N)が動作可能な状態かどうかを監視する。監視方法として、各処理は自身が動作した際にコア状態管理部208(208-0、208-1、・・・、208-N)に起動中であることを通知する。通知方法は、フラグや整数や文字列等の変数で行う。その他にも、コア状態管理部208がもつ共通変数に加算し、終了時に減算することで、共通変数の値を見ることで処理が起動中か終了中かを判断することが可能となる。コア状態管理部208の監視方法は本実施例における記述に限定されず、コアで処理が動作可能な空き状態であることが判明する手法を利用可能である。
本実施例において、監視部201は各Core0-CoreN(101-0、101-1、・・・、101-N)において処理実行可能かを、各コア状態管理部208(208-0、208-1、・・・、208-N)を監視することによって判断することができる。監視部201は調停処理起動指示部205や処理起動指示部202に対して起動指示を発行する。
調停処理起動指示部205や処理起動指示部202は実施例1、実施例2と同様に調停処理部207(207-0、207-1、・・・、207-N)と処理部204(204-0、204-1、・・・、204-N)を起動する。
本実施例では、監視部201が調停処理起動指示部205と処理起動指示部202とに対して同じコア管理状態を用いて起動指示を出すことができる。これにより、複数の異なる処理部204と調停指示部207を、定められた順序で何度も起動し続けることが可能となり、より複雑な実行順序を持つソフトウェアのスケジューリングが可能となる。より複雑な実行順序を持つ複数の処理部204と調停指示部207のスケジューリングに対し、リアルタイム性の確保と、データ競合の回避による一貫性の確保の両立が可能となる。
図6は、実施例4に係るソフトウェアの構成例を示す図である。図6に示すソフトウェア200cは、実施例1のソフトウェア200と同様に、図2に示す車載制御装置1で実行される。
図6示すソフトウェア200cが実施例2のソフトウェア200aと異なる点は、各コアCore0-CoreN(101-0、101-1、・・・、101-N)がコア占有部209(209-0、209-1、・・・、209-N)を備えることで、確実に調停処理部207(207-0、207-1、・・・、207-N)を起動させることができるようになる点である。
本実施例では、複数のコアCore0-CoreN(101-0、101-1、・・・、101-N)にまたがるコア占有部209は特定の処理部204(204-0、204-1、・・・、204-N)の起動が必要なタイミングで、コア占有部209が起動する。
コア占有部209は、優先処理部203(203-0、203-1、・・・、203-N)よりも低い優先度で起動するが、一度起動すると指定の優先処理部203が割り込み起動することができないように、割り込み禁止やフラグによる優先処理の待機などの、待機指示を行う。コア占有部209の起動中に指定の優先処理203の起動が制限できるのであれば、上記以外の待機指示の実装でも良い。
コア占有部209(209-0、209-1、・・・、209-N)は自身が起動した際に、監視部201に起動通知を行う。起動通知は整数やフラグやその他変数でも良く、OSEventなどの機能を使用してもよい。
監視部201は、起動指示を調停処理起動指示部205に対して行い、調停処理起動指示部205は起動指示を調停処理部207(207-0、207-1、・・・、207-N)に対して行う。
起動指示を受けた調停処理部207(207-0、207-1、・・・、207-N)は、同じコアCore(101-0、101-1、・・・、101-N)内にあるコア占有部209(209-0、209-1、・・・、209-N)の占有を引き継ぐことで調停処理を実施する。引継ぎ方法としていくつかの方法が考えられる。一つは、コア占有部209が調停処理部207の起動指示を監視し、調停処理部207の起動指示が発行されたタイミングで処理を停止する方法である。この時、調停処理部207がコア占有部209の終了よりも先に起動していたとしても、調停処理部207は優先度制御により、コア占有部209が終了するまで待機し、コア占有部209の終了後に起動することができる。このほかにも、同じ処理単位にコア占有部209と調停処理部207を配置しておき、調停処理部207の起動開始を無限ループなどで起動指示が出るまで待機することで、同様の効果を実現できる。処理単位とは関数や、タスクや、スレッドやプロセスなどの、一連の手続きが逐次実行されるものを指す。
本実施例によれば、コア占有部209が起動後は、優先処理203等の処理が割り込むことを制限することで、調停処理部207の起動までの間に別の優先度処理が割り込んだ結果すべてのコアCore0-CoreN(101-0、101-1、・・・、101-N)の調停処理部207の起動を制限されてしまうケースを避けることができる。
調停処理部207の起動が制限されてしまうと、各コアCore0-CoreNでの処理部204の起動が遅れてしまい、制御ソフトウェア200cのリアルタイム性を損なう恐れがある。
また、本実施例により、コアCore0-CoreN間での調停処理部207及び処理部204の起動がされなくなるリスクを軽減させることが可能となる。
本実施例では、実施例4の構成に加え、各調停処理部207(207-0、207-1、・・・、207-N)を複数の単位に分割して、複数のサブ調停処理部を構成する。監視部201はコア状態を調停処理起動指示部205に通知し、調停処理起動指示部205はコア状態に応じて複数のサブ調停処理部を起動させる。図7は、実施例5に係る調停処理部の構成例を示す表である。図7には、本実施例における調停処理部207を分割した後の調停部分割テーブル400が示されている。
本実施例における調停部分割テーブル400は、参照No401と、送信コア情報402と、受信コア情報403と、起動フラグ404と、で構成される。
参照No401は、調停部分割テーブル400の各行を一意に識別するために使用する。整数や小数や文字列やその他識別情報に使用可能な値を用いて表現する。調停部分割テーブル400の各行が、複数のサブ調停処理部のそれぞれに対応する。
送信コア情報402は、Core0-CoreN(101-0、101-1、・・・、101-N)から一つ以上を選択し、記載する。値はCore0-CoreN(101-0、101-1、・・・、101-N)が一意に識別可能な整数や小数や文字列やその他識別情報に使用可能な値を使用する。
受信コア情報403は、Core0-CoreN(101-0、101-1、・・・、101-N)から一つ以上を選択し、記載する。値はCore0-CoreN(101-0、101-1、・・・、101-N)が一意に識別可能な整数や小数や文字列やその他識別情報に使用可能な値を使用する。
起動フラグ404は、最低限Core0-CoreN(101-0、101-1、・・・、101-N)が休止中かが判別可能な値を使用する。図7では、TRUEかFALSEかのBoolean型で表現しており、TRUEがCore101で目的の処理が起動している状態、FALSEはCore101にどのような処理も起動していない状態を表す。起動フラグ404は2値に制限するものではなく、起動中の処理が一意に識別可能な整数や小数や文字列やその他識別情報に使用可能な値を使用してもよい。
図8は、実施例5に係るソフトウェアの処理を示すフローチャート図である。以下、図8を用いて、ソフトウェアの調停処理のふるまいを説明する。
ソフトウェアの処理は、監視部201において、START301から始まる。
次に、監視部201は参照No初期化302を実施し、現在参照No401の値を初期化する。初期化する値は、調停部分割テーブル400に含まれる参照No401の値から任意の値を使用する。
次に、空きコア情報更新303において、実施例4における監視部201の各Core0-CoreN(101-0、101-1、・・・、101-N)が起動中かの監視を行う。
次に、調停部分割テーブルから参照No行抽出304において、現在参照Noを持つ、調停部分割テーブル400の行を抽出し、参照中行情報として保持する。
次に、空きコア確認305において、抽出した参照中行情報の送信コア情報402と、受信コア情報403と、が空きコアであるかを評価する。
送信コア情報402の値であるCore(101-0、101-1、・・・、101-N)が空きコアでないとき(no)、参照No変更310を実施する。
受信コア情報403の値であるCore(101-0、101-1、・・・、101-N)が空きコアでないとき(no)、参照No変更310を実施する。
送信コア情報402の値であるCore(101-0、101-1、・・・、101-N)、および、受信コア情報403の値であるCore(101-0、101-1、・・・、101-N)が空きコアのとき(yes)、起動フラグ確認306へ移行する。
次に、起動フラグ確認306において、参照中行情報の起動中フラグ404を参照する。起動中フラグ404がFALSEである場合(yes)、参照No調停部起動処理307を実施する。起動中フラグ404がTRUEである場合(no)、参照No変更310を実施する。
次に、参照No調停部起動処理307において、調停処理起動指示部205は参照中行情報に記載の調停処理部207の分割された一部を起動する。
次に、参照No行起動フラグ更新308において、参照中行情報の起動フラグ404をFALSEからTRUEへと更新する。
次に、起動フラグ確認309において、調停部分割テーブル400すべての行で起動フラグ404がTRUEになっているかを評価する。
全ての起動フラグがTRUEになっている場合(yes)、起動フラグ初期化処理311を実施する。
全ての起動フラグがTRUEになっていない場合(no)、参照No変更310を実施する。
参照No変更310では、現在参照Noの値を変更する。例えば、参照No401の値が整数の場合は1を加算するなどする。ここで、現在参照Noとして取りうる値は調停部分割テーブル400の参照No401に存在する値を使用する。
起動フラグ初期化処理311では、調停部分割テーブル400の起動フラグ404を初期化する。本実施例においては、調停部分割テーブル400の全ての行に対して起動フラグ404をFALSEにすることを指す。状況に応じて、FALSEにする行を選択してもよく、又は他の値を初期値としてもよい。
END312で本実施例における監視部201及び調停処理起動指示部205の調停処理のふるまいを終える。
調停処理起動指示部205の調停処理の終了の後、調停監視部206は各調停処理部207の動作が終了したことを監視し、処理起動指示部202への起動指示を発行する。
もしくは、調停処理起動指示部205の終了の後、すぐに調停監視部206が処理起動指示部202への起動指示を発行する。これは、調停処理部207が送信コア情報402と受信コア情報403とに分割されたことで、処理部204の起動時に他のCore101で起動中の競合関係にある調停処理部207が起動されていないことが保証されるためである。
本実施例において、処理起動指示部202が処理部204を起動する状態になったときに、競合関係にある調停処理部207は、その動作を終了していることが保証される。
また、いくつかのCore101が優先処理部203によって占有されていたとしても、占有されていないCore101に割り当てられた分割後の調停処理部207が起動できる。一部の調停処理部207を先行して起動することができるため、処理を高速化することができる。
実施例5によれば、調停処理部207の処理の一部を先行して開始でき、また処理の一部を先行して終了し一部の処理部204の起動を早めることができ、全体のCPU利用率を改善することができる。
図9は、実施例6に係る調停処理部の構成例を示す表である。図9には、実施例6に係る調停部分割テーブル400aが示されている。調停部分割テーブル400aは、実施例5の調停部分割テーブル400に、優先度レベルLv情報405が追加されている。調停部分割テーブル400aでは、優先度レベルLv情報405に応じて調停処理部207への起動指示方法を切り替える。優先度レベルLv情報405は、起動優先度とみなすことができる。
優先度レベルLv情報405は、数字や文字列などで表現し、異なる優先度レベルLv情報間で優先度が判断できる値であればよい。優先度レベルLv情報405は、いくつかの行で重複してもよく、重複した優先度レベルLv情報405を持つ行は同じ優先度を持ち、どちらが先に起動されてもよいことを表す。
本実施例における優先度レベルLv情報405毎の指示方法切り替えを示す。
ここで、優先度レベルLv=1を最高優先度、優先度レベルLv=3を最低優先度とし、優先度レベルLv=1、優先度レベルLv=2、優先度レベルLv=3の3つの優先度レベルLvに分割する。
まず、優先度レベルLv=1の優先度レベルLv情報405を持つ行のみを抽出し、抽出済み調停部分割テーブルAとする。
次に、抽出済み調停部分割テーブルAを調停部分割テーブルとして、図8に示すフローチャートを実施する。フローチャート終了後、処理起動指示部202への起動指示は行わない。
この段階で、調停処理部207の起動が許される一定時間が経過していた場合、以降の優先度レベルLvの処理を断念し、処理起動指示部202への起動指示を行う。
次に、優先度レベルLv=2の優先度レベルLv情報405を持つ行のみを抽出し、抽出済み調停部分割テーブルBとする。
次に、抽出済み調停部分割テーブルBを調停部分割テーブルとして、図8に示すフローチャートを実施する。フローチャート終了後、処理起動指示部202への起動指示は行わない。
この段階で、調停処理部207の起動が許される一定時間が経過していた場合、以降の優先度レベルLvの処理を断念し、処理起動指示部202への起動指示を行う。
最後に、優先度レベルLv=3の優先度レベルLv情報405を持つ行のみを抽出し、抽出済み調停部分割テーブルCとする。
次に、抽出済み調停部分割テーブルCを調停部分割テーブルとして、図8に示すフローチャートを実施する。フローチャート終了後、処理起動指示部202への起動指示を開始する。
本実施例では、優先レベルLv毎に調停処理部207を分割することで、CPU利用率が高い場合であっても競合を回避しながら必要最小限の調停処理のみを実施することで、リアルタイム性を維持しながら制御を計算することが可能となる。
本実施例では、実施例6の指示方法切り替えに関する異なる実施方法を示す。
本実施例における優先度レベルLv情報405毎の指示方法切り替えを示す。優先度レベルLv=1を最高優先度、優先度レベルLv=3を最低優先度とし、優先度レベルLv=1、優先度レベルLv=2、優先度レベルLv=3の3つの優先度レベルLvに分割する。
まず、優先度レベルLv=1の優先度レベルLv情報405を持つ行のみを抽出し、最優先調停部分割テーブルとする。
最優先調停部分割テーブル記載の処理は、優先処理部203に優先して処理を実施する。そのため、調停処理起動指示部205は監視部201の指示を待たず調停処理部207への起動指示を行う。
次に、優先度レベルLv=2の優先度レベルLv情報405を持つ行のみを抽出し、抽出済み調停部分割テーブルDとする。
次に、抽出済み調停部分割テーブルDを調停部分割テーブルとして、図8に示すフローチャートを実施する。フローチャート終了後、処理起動指示部202への起動指示は行わない。
この段階で、調停処理部207の起動が許される一定時間が経過していた場合、処理起動指示部202への起動指示を行う。
最後に、優先度レベルLv=3の優先度レベルLv情報405を持つ行のみを抽出し、抽出済み調停部分割テーブルEとする。
次に、抽出済み調停部分割テーブルEを調停部分割テーブルとして、調停処理起動指示部205への起動指示を開始する。
優先度レベルLv=3の調停処理部207は、優先度を処理部204よりも低く設定することで、処理部204の終了後に調停処理を起動するように設定する。
本実施例では、最高優先度の優先度レベルLv=1の調停処理部207を優先処理部203よりも高優先で起動することで、必要最小限の重要データの更新のリアルタイム性を維持した上で、更に、最低優先度の優先度レベルLv=3の調停処理部207が処理部204の終了の直後に起動する。これにより、実施例6では最悪更新されない恐れがあった一部の調停処理部207が起動されるため、最小限の遅延でデータ更新が可能となり、ある程度のリアルタイム性維持が可能となる。
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
1 車載制御装置、2 車載ネットワーク、3 センサ、4 アクチュエータ、101 Core、102 LocalRAM、103 LocalROM、104 GlobalRAM、105 入出力IF、106 通信IF、107 不揮発性メモリ、108 バス、201 監視部、202 処理起動指示部、203 優先処理部、204 処理部、205 調停処理起動指示部、206 調停監視部、207 調停処理部、208 コア状態管理部、209 コア占有部、301 START、302 参照No初期化、303 空きコア情報更新、304 参照No行抽出、305 空きコア確認、306 起動フラグ確認、307 参照No調停部起動処理、308 起動フラグ変更、309 起動フラグ確認、310 参照No変更、311 起動フラグ初期化処理、312 END、401 参照No、402 送信コア情報、403 受信コア情報、404 起動中フラグ、405 優先レベルLv情報。

Claims (9)

  1. 第1コアを含む複数のコアと、
    前記複数のコアの各コアに1つの処理部が設けられるようにされ、一定条件で起動する複数の処理部と、
    前記複数のコアの各コアに1つの優先処理部が設けられようにされ、前記複数の処理部よりも優先度が高く設定された複数の優先処理部であって、前記複数の優先処理部は、前記複数の優先処理部が処理中は前記複数の処理部は待機するように、優先的に処理されるように構成され、
    前記第1コアに設けられ、全ての前記複数の優先処理部が動作していないことを監視する監視部と、
    前記第1コアに設けられ、全ての前記複数の優先処理部が動作していないとき、前記監視部から指示で一度に前記複数の処理部を起動する起動指示部と、を備える、ことを特徴とする車載制御装置。
  2. 請求項1に記載の車載制御装置において、
    前記起動指示部は、前記複数の優先処理部が起動しないように制御するコア占有処理を実施し、前記コア占有処理の終了後、前記複数の処理部を起動させる、ことを特徴とする車載制御装置。
  3. 請求項2に記載の車載制御装置において、
    前記複数のコアの各コアに1つの調停処理部が設けられようにされた複数の調停処理部であって、前記複数の調停処理部は前記複数のコアにおける競合関係にある処理を協調しながら解決していく処理を行い、
    前記第1コアに設けられ、前記監視部の起動指示を受け、前記複数の調停処理部の起動を行う調停処理起動指示部と、
    前記第1コアに設けられ、前記複数の調停処理部の自身の処理が終了した際の通知情報を参照することで前記複数の調停処理部の処理が終了しているかを監視し、すべての前記複数の調停処理部の処理が終了を確認したとき、前記起動指示部に対して起動指示を発行する調停監視部と、を備え、
    前記調停処理起動指示部は、前記複数の処理部の起動前に、前記複数の調停処理部を起動し、前記複数の調停処理部の処理の終了後に、前記複数の処理部を起動する、ことを特徴とする車載制御装置。
  4. 請求項3に記載の車載制御装置において、
    前記複数のコアの各コアに1つのコア状態管理部が設けられようにされ、各コアの状態を管理する複数のコア状態管理部を備え、
    前記複数のコア状態管理部のおのおのは、自身の設けられたコアの前記優先処理部、前記処理部及び前記調停処理部が起動中か終了中かの状態を監視して自身の設けられたコアが動作可能な状態かどうかを監視し、
    前記監視部は、前記複数のコアにおいて処理が実行可能かを、前記複数のコア状態管理部を監視することによって判断し、前記複数のコアにおいて処理が実行可能と判断した場合、前記調停処理起動指示部および前記起動指示部に対して起動指示を発行する、ことを特徴とする車載制御装置。
  5. 請求項3に記載の車載制御装置において、
    前記複数のコアの各コアに1つのコア状態管理部が設けられようにされた複数のコア占有部を備え、
    前記複数のコア占有部は、前記複数の処理部の内の特定の処理部の起動が必要なタイミングで起動する構成とされ、
    前記複数のコア占有部は、前記複数の優先処理部よりも低い優先度で起動し、一度起動すると前記複数の優先処理部が割り込み起動することができないように前記複数の優先処理部に対する待機指示を行い、
    前記監視部は、前記複数のコア占有部の起動を監視する、ことを特徴とする車載制御装置。
  6. 請求項5に記載の車載制御装置において、
    前記調停処理部は、複数のサブ調停処理部に分かれ、
    前記複数のサブ調停処理部のそれぞれに対応する複数の行を有する調停部分割テーブルを有し、
    前記調停部分割テーブルの各行は、対応するサブ調停処理部を識別するための参照Noと、送信コアを記載する送信コア情報と、受信コアを記載する受信コア情報と、目的の処理が起動している状態または目的の処理が起動していない状態を示す起動フラグと、により構成され、
    前記監視部は前記起動フラグの状態を前記調停処理起動指示部に通知し、
    前記調停処理起動指示部は前記起動フラグの状態が目的の処理が起動していない状態を示す状態に応じて前記複数のサブ調停処理部の対応するサブ調停処理部の調停処理を起動させる、ことを特徴とする車載制御装置。
  7. 請求項6に記載の車載制御装置において、
    前記調停部分割テーブルの各行は、対応するサブ調停処理部の起動優先度を示す優先度レベル情報を有する、ことを特徴とする車載制御装置。
  8. 請求項7に記載の車載制御装置において、
    前記調停処理起動指示部は、前記起動優先度の順に対応するサブ調停処理部の調停処理を起動する、ことを特徴とする車載制御装置。
  9. 請求項8に記載の車載制御装置において、
    前記調停処理起動指示部の前記複数のサブ調停処理部の調停処理の起動の終了の後、前記調停監視部は前記複数のサブ調停処理部の調停処理の動作が終了したことを監視し、前記調停監視部は前記調停処理部の調停処理の動作が終了した時、前記起動指示部への起動指示を発行し、
    前記起動指示部は、前記複数の処理部を起動する、ことを特徴とする車載制御装置。
JP2020106674A 2020-06-22 2020-06-22 車載制御装置 Active JP7514119B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020106674A JP7514119B2 (ja) 2020-06-22 2020-06-22 車載制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020106674A JP7514119B2 (ja) 2020-06-22 2020-06-22 車載制御装置

Publications (2)

Publication Number Publication Date
JP2022002015A JP2022002015A (ja) 2022-01-06
JP7514119B2 true JP7514119B2 (ja) 2024-07-10

Family

ID=79244527

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020106674A Active JP7514119B2 (ja) 2020-06-22 2020-06-22 車載制御装置

Country Status (1)

Country Link
JP (1) JP7514119B2 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004152185A (ja) 2002-10-31 2004-05-27 Internatl Business Mach Corp <Ibm> 排他制御装置、排他制御方法、プログラム、及び記録媒体
JP2013152636A (ja) 2012-01-25 2013-08-08 Toyota Motor Corp 情報処理装置、タスクスケジューリング方法
JP2017199266A (ja) 2016-04-28 2017-11-02 日立オートモティブシステムズ株式会社 車両制御装置、及び車両システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004152185A (ja) 2002-10-31 2004-05-27 Internatl Business Mach Corp <Ibm> 排他制御装置、排他制御方法、プログラム、及び記録媒体
JP2013152636A (ja) 2012-01-25 2013-08-08 Toyota Motor Corp 情報処理装置、タスクスケジューリング方法
JP2017199266A (ja) 2016-04-28 2017-11-02 日立オートモティブシステムズ株式会社 車両制御装置、及び車両システム
JP6838222B2 (ja) 2016-04-28 2021-03-03 日立Astemo株式会社 車両制御装置、及び車両システム

Also Published As

Publication number Publication date
JP2022002015A (ja) 2022-01-06

Similar Documents

Publication Publication Date Title
US6675191B1 (en) Method of starting execution of threads simultaneously at a plurality of processors and device therefor
JP5816572B2 (ja) 車両用制御装置
US5941967A (en) Unit for arbitration of access to a bus of a multiprocessor system with multiprocessor system for access to a plurality of shared resources, with temporary masking of pseudo random duration of access requests for the execution of access retry
JPH04348451A (ja) 並列計算機
EP2608040A1 (en) Simulation method, system and program
JP5498505B2 (ja) データバースト間の競合の解決
US20060136640A1 (en) Apparatus and method for hardware semaphore
JP2003298599A (ja) 分散制御方法及び装置
KR970016979A (ko) 다중 처리 시스템에서 타스크의 큐잉 시스템 및 방법
US7590990B2 (en) Computer system
KR20220002547A (ko) 태스크 스케줄링 방법과 장치
US20110265093A1 (en) Computer System and Program Product
EP3789874B1 (en) Vehicle control device, vehicle control method, and recording medium storing vehicle control program
US20200272512A1 (en) Hardware for supporting os driven observation and anticipation based on more granular, variable sized observation units
CN111791886B (zh) 用于车辆的实时控制系统以及经由实时控制系统执行车辆控制的方法
JP7514119B2 (ja) 車載制御装置
JP2007026366A (ja) メモリコントローラ
JP7042105B2 (ja) プログラム実行制御方法および車両制御装置
JP2001216284A (ja) 電子制御装置
JPH11353872A (ja) メモリインタフェース回路
US10719357B1 (en) Hardware for supporting OS driven load anticipation based on variable sized load units
CN115795392A (zh) 基于异构融合多核的数据处理方法以及处理系统
WO2000033175A2 (en) Method for increasing efficiency of multiprocessing systems
JPH1049388A (ja) 入出力制御装置
JP7498845B2 (ja) 制御装置及び制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240202

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240628

R150 Certificate of patent or registration of utility model

Ref document number: 7514119

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150