JP7342669B2 - 電子制御装置 - Google Patents

電子制御装置 Download PDF

Info

Publication number
JP7342669B2
JP7342669B2 JP2019219680A JP2019219680A JP7342669B2 JP 7342669 B2 JP7342669 B2 JP 7342669B2 JP 2019219680 A JP2019219680 A JP 2019219680A JP 2019219680 A JP2019219680 A JP 2019219680A JP 7342669 B2 JP7342669 B2 JP 7342669B2
Authority
JP
Japan
Prior art keywords
core
interrupt
cpu
processing
cpu core
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
JP2019219680A
Other languages
English (en)
Other versions
JP2021089581A (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.)
Denso Corp
Original Assignee
Denso Corp
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 Denso Corp filed Critical Denso Corp
Priority to JP2019219680A priority Critical patent/JP7342669B2/ja
Publication of JP2021089581A publication Critical patent/JP2021089581A/ja
Application granted granted Critical
Publication of JP7342669B2 publication Critical patent/JP7342669B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Microcomputers (AREA)

Description

本開示は、複数のCPUコアを備える電子制御装置に関する。
近年、例えばエンジン制御装置等の電子制御装置では、増加する処理負荷への対応策としてマルチコアマイコンの採用が進んでいる。
複数のCPUコアを用いて処理を分散する動作形態として、Symmetrical Multi Processing(以下、SMP)およびAsymmetrical Multi Processing(以下、AMP)が一般的に知られている。SMPは、複数のプログラムを複数のCPUコアによって動的に分散させて、各CPUコアの負荷を分散させる。一方、AMPは、特定のプログラムを特定のCPUコアに割り付けることでプログラムのリアルタイム性を改善させている。エンジン制御ECUのように動作再現性(すなわち、処理順序)および性能(すなわち、リアルタイム性)が要求される場合には、AMP方式が採用される。AMP方式では、静的にCPUコアの配置を決めるため、処理要因によっては、CPUコアに遊休状態が発生したり、高負荷の状態が特定のCPUコアに偏ったりすることが考えられる。
特許文献1には、第1CPUコアと第2CPUコアとを備えるマルチコア演算装置において、第1CPUコアは、挙動スケジュールアプリケーションを実行し、第2コアは、アクチュエータ制御アプリケーションおよびセンシングアプリケーションを実行することが記載されている。
特開2018-13843号公報
特許文献1に記載の技術では、プログラムを実行するCPUコアを予め固定して割り当てているため、処理タイミングが動的に変動する割込処理(例えば、優先度の高い処理)による処理負荷の増大を改善することはできない。
本開示は、割込処理によるCPUコアの処理負荷増大を抑制することを目的とする。
本開示の一態様は、複数のCPUコア(11,12,13,14)と、プログラム指定記憶部(21,22,23,24)と、コア指定記憶部(RR)と、割込制御部(17)と、代行判断部(S270,S480,S1070)と、代行選択部(S320,S670,S1120)と、変更部(S330,S680,S1130)とを備える電子制御装置(1)である。
プログラム指定記憶部は、複数の割込要因毎に、複数のCPUコアのそれぞれが実行するプログラムを指定するプログラム指定情報(VT)を記憶するように構成される。
コア指定記憶部は、複数の割込要因毎に、割込要因に起因して割り込みを発生させるCPUコアを指定するコア指定情報を記憶するように構成される。
割込制御部は、割込要因が発生すると、コア指定記憶部に記憶されているコア指定情報に基づいて、発生した割込要因に対応するCPUコアに対して割り込みを発生させるように構成される。
代行判断部は、処理実行コアについて、割込要因に対応する割込処理を代行させる必要があるか否かを判断するように構成される。処理実行コアは、複数のCPUコアのうちの任意の1つのCPUコアである。
代行選択部は、割込処理を代行させる必要があると代行判断部が判断した場合に、1つまたは複数の代行対象コアの中から、割込処理を実行することができる1つの代行対象コアを選択するように構成される。代行対象コアは、複数のCPUコアのうち処理実行コア以外のCPUコアである。
変更部は、代行選択部により選択された代行対象コアが割込処理を実行するようにコア指定情報を変更するように構成される。
このように構成された本開示の電子制御装置では、割込制御部は、割込要因が発生すると、コア指定情報に基づいて、発生した割込要因に対応するCPUコアに対して割り込みを発生させる。これにより、本開示の電子制御装置では、割込要因に対応するCPUコアが、プログラム指定情報に基づいて、割込要因に対応するプログラムを実行する。
そして、本開示の電子制御装置は、複数のCPUコアのうちの任意の1つのCPUコアである処理実行コアについて、割込要因に対応する割込処理を代行させる必要がある場合に、処理実行コア以外のCPUコアである代行対象コアが割込処理を実行するようにコア指定情報を変更する。これにより、本開示の電子制御装置は、処理実行コアについて、割込要因に対応する割込処理を代行させる必要がある場合には、割込要因が発生したときに処理実行コアが実行していたプログラムを代行対象コアに実行させることができる。
これにより、本開示の電子制御装置は、処理実行コアの処理負荷が高い場合において、処理実行コアに割り当てられていた割込要因が発生したときに、処理実行コアに割り当てられていた割込要因に対応する割込処理を、処理実行コア以外のCPUコアに代行させることができる。このため、本開示の電子制御装置は、割込処理によるCPUコアの処理負荷増大を抑制することができる。
ECUの構成を示すブロック図である。 要求制御レジスタの構成を示す図である。 ベクターテーブルの構成を示す図である。 割込起床負荷テーブルの構成を示す図である。 第1実施形態のアイドルタスクを示すフローチャートである。 10msタスクを示すフローチャートである。 第1実施形態の起床設定処理を示すフローチャートである。 割込処理依頼パラメータの構成を示す図である。 起床依頼処理を示すフローチャートである。 第2実施形態の起床設定処理を示すフローチャートである。 割込起床遅延テーブルの構成を示す図である。 第3実施形態のアイドルタスクを示すフローチャートである。 第3実施形態の起床設定処理を示すフローチャートである。 第4実施形態のアイドルタスクを示すフローチャートである。
[第1実施形態]
以下に本開示の第1実施形態を図面とともに説明する。
本実施形態の電子制御装置1(以下、ECU1)は、車両に搭載され、図1に示すように、マイクロコンピュータ2(以下、マイコン2)と、入力回路3と、出力回路4とを備える。ECUは、Electronic Control Unitの略である。
マイコン2には、クランク角センサ51からのクランク角信号と、カム角センサ52からのカム角信号と、スロットル開度センサ53からのスロットル開度信号とが、入力回路3を介して入力される。
クランク角センサ51は、エンジンのクランク軸の回転に応じてクランク角信号を出力する。カム角センサ52は、エンジンのカム軸の回転に応じてカム角信号を出力する。スロットル開度センサ53は、エンジンに供給される空気量を調整するスロットルバルブの開度(以下、スロットル開度)を検出し、検出結果を示すスロットル開度信号を出力する。
マイコン2は、入力回路3を介して入力される上記各信号に基づいてエンジンの状態を検出する。そしてマイコン2は、エンジンの状態に基づいて、エンジンの各気筒内の点火プラグ61、各気筒内のインジェクタ62、および、スロットル開度を変えるスロットルモータ63などの各種アクチュエータを制御するための制御信号を出力回路4を介して出力する。
スロットルバルブは、回転軸を中心に回転可能に構成されており、スロットルモータ63からの回転トルクが減速ギヤを介して回転軸に伝達されることで、吸気管内で開閉動作し、スロットル開度を変化させる。
また回転軸には、リターンスプリングが取り付けられている。このリターンスプリングは、リンプホーム走行が可能なエンジン出力が得られるように予め設定されたスロットル開度(以下、オープナ開度という)となるように回転軸を付勢する。すなわち、スロットルモータ63への通電が停止して、回転トルクが回転軸に伝達されなくなった場合であっても、スロットルバルブはオープナ開度に保持され、これにより、リンプホーム走行に必要な吸気量が確保される。
マイコン2は、第1CPUコア11と、第2CPUコア12と、第3CPUコア13と、第4CPUコア14と、RAM15と、入出力部16と、割込コントローラ17と、バス18と、ROM21,22,23,24と、RAM31,32,33,34とを備える。以下、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14をまとめてCPUコア11~14ともいう。
マイクロコンピュータの各種機能は、CPUコア11~14が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、ROM21,22,23,24が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムの実行により、プログラムに対応する方法が実行される。なお、CPUコア11~14が実行する機能の一部または全部を、一つあるいは複数のIC等によりハードウェア的に構成してもよい。また、ECU1を構成するマイクロコンピュータの数は1つでも複数でもよい。
第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14は、車両に搭載されているエンジンを制御するための各種制御処理を分散して実行する。
RAM15は、揮発性メモリであり、CPUコア11~14の演算結果等を一時的に記憶する。
入出力部16は、マイコン2の外部とCPUコア11~14との間でデータの入出力を行わせるための回路である。
割込コントローラ17は、様々な割込要因の発生を示す割込要求信号を入力し、入力した割込要求信号に対応する割込要因毎に予め設定された優先度に基づいて、優先度が最も高い割込要因に対応した割込信号をCPUコア11~14へ出力する。
バス18は、CPUコア11~14、RAM15、入出力部16および割込コントローラ17を、互いにデータ入出力可能に接続する。
ROM21,22,23,24は、不揮発性メモリであり、エンジンを制御する各種制御処理を実行するためのプログラムを記憶する。ROM21、ROM22、ROM23およびROM24はそれぞれ、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14に接続される。
RAM31,32,33,34は、揮発性メモリである。RAM31、RAM32、RAM33およびRAM34はそれぞれ、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14に接続される。RAM31、RAM32、RAM33およびRAM34はそれぞれ、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14の演算結果等を一時的に記憶する。
割込コントローラ17は、図2に示すように、要求制御レジスタRRを備える。要求制御レジスタRRは、複数の割込要因フィールドIF1,IF2,IF3,・・・・を備える。
複数の割込要因フィールドIF1,IF2,IF3,・・・・のそれぞれには、互いに異なる割込要因が設定されている。本実施形態では、割込要因フィールドIF1は、クランク角信号の入力に対応している。割込要因フィールドIF2は、カム角信号の入力に対応している。割込要因フィールドIF3は、タイマ割込に対応している。
複数の割込要因フィールドIF1,IF2,IF3,・・・・に格納される値によって、割込要因の発生に応じた処理を実行するCPUコアが指定される。複数の割込要因フィールドIF1,IF2,IF3,・・・・に格納される初期値は、図2に示すように、第1CPUコア11を指定するために予め設定された値である。
ROM21,22,23,24には、図3に示すように、ベクターテーブルVTが記憶されている。ベクターテーブルVTは、複数の割込要因毎に、CPUコア11~14が実行する制御プログラムを指定する。
本実施形態では、割込要因がクランク角信号の入力である場合にはCPUコア11~14に対して、点火・噴射制御プログラムが指定されている。また、割込要因がカム角信号の入力である場合には、CPUコア11~14に対して、点火・噴射制御プログラムが指定されている。また、割込要因がタイマ割込である場合には、第1CPUコア11および第2CPUコア12に対して、スロットル開度センサ53から入力されるスロットル開度信号の電圧値をデジタルデータへ変換するAD変換処理プログラムが指定されている。
ROM21,22,23,24には、図4に示すように、割込起床負荷テーブルLTが記憶されている。割込起床負荷テーブルLTには、複数の割込要因毎に、CPUコア11~14に対する負荷閾値が設定されている。
本実施形態では、割込要因がクランク角信号の入力である場合には、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14のそれぞれに対して、50%、80%、70%および60%の負荷閾値が設定されている。
また、割込要因がカム角信号の入力である場合には、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14のそれぞれに対して、60%、80%、80%および70%の負荷閾値が設定されている。
また、割込要因がタイマ割込である場合には、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14のそれぞれに対して、70%、80%、90%および80%の負荷閾値が設定されている。
次に、CPUコア11~14が実行するアイドルタスクの手順を説明する。アイドルタスクは、CPUコア11~14が割込処理を実行していないときに実行される処理である。すなわち、CPUコア11~14の処理負荷が100%であるときには、アイドルタスクは実行されない。なお、以下では、第2CPUコア12で代表して、アイドルタスクの手順を説明する。
アイドルタスクが実行されると、第2CPUコア12は、図5に示すように、まずS10にて、RAM32に設けられたアイドルカウンタCounterに格納されている値に1を加算した加算値を、アイドルカウンタCounterに格納する。
そして第2CPUコア12は、S20にて、アイドルカウンタCounterに格納されている値が、予め設定されたリセット判定値J1を超えているか否かを判断する。リセット判定値J1は、アイドル状態が1ms継続したときにアイドルカウンタCounterが到達する値に設定される。
ここで、アイドルカウンタCounterに格納されている値がリセット判定値J1以下である場合には、第2CPUコア12は、S10に移行する。一方、アイドルカウンタCounterに格納されている値がリセット判定値J1を超えている場合には、第2CPUコア12は、S30にて、アイドルカウンタCounterに0を格納する。
さらに第2CPUコア12は、S40にて、RAM32に設けられた1ミリ秒カウンタ1ms_Counterに格納されている値に1を加算した加算値を、1ミリ秒カウンタ1ms_Counterに格納し、アイドルタスクを終了する。
次に、CPUコア11~14が実行する10msタスクの手順を説明する。10msタスクは、10msが経過する毎に実行される処理である。なお、以下では、第2CPUコア12で代表して、10msタスクの手順を説明する。
10msタスクが実行されると、第2CPUコア12は、図6に示すように、まずS110にて、1ミリ秒カウンタ1ms_Counterに格納されている値を取得する。そして第2CPUコア12は、S120にて、下式(1)の右辺で算出される値を、RAM32に設けられた処理負荷CPU_Loadに格納する。
CPU_Load=(1-1ms_Counter/10)×100 ・・・(1)
さらに第2CPUコア12は、S130にて、1ミリ秒カウンタ1ms_Counterに0を格納して、10msタスクを終了する。
次に、CPUコア11~14が実行する起床設定処理の手順を説明する。起床設定処理は、CPUコア11~14の動作中において例えば1ms毎に繰り返し実行される処理である。なお、以下では、第2CPUコア12で代表して、起床設定処理の手順を説明する。
起床設定処理が実行されると、第2CPUコア12は、図7に示すように、まずS210にて、エンジン回転数Neが予め設定された処理禁止判定値J2(例えば、5000rpm)を超えているか否かを判断する。ここで、エンジン回転数Neが処理禁止判定値J2以下である場合には、第2CPUコア12は、起床設定処理を終了する。
一方、エンジン回転数Neが処理禁止判定値J2を超えている場合には、第2CPUコア12は、S220にて、自コア(すなわち、第2CPUコア12)が割込起床コアであるか否かを判断する。具体的には、第2CPUコア12は、要求制御レジスタRRを参照し、複数の割込要因フィールドIF1,IF2,IF3,・・・・のうち、第2CPUコア12が指定されている割込要因フィールドが1以上存在する場合に、自コアが割込起床コアであると判断する。
なお、第1CPUコア11が実行する起床設定処理では、自コアは第1CPUコア11である。同様に、第3CPUコア13が実行する起床設定処理では、自コアは第3CPUコア13であり、第4CPUコア14が実行する起床設定処理では、自コアは第4CPUコア14である。
ここで、自コアが割込起床コアでない場合には、第2CPUコア12は、起床設定処理を終了する。一方、自コアが割込起床コアである場合には、第2CPUコア12は、S230にて、自コアの処理負荷CPU_Loadに格納されている値を、RAM32に設けられた自コア処理負荷CPU_Load_0に格納する。さらに第2CPUコア12は、S240にて、RAM32に設けられた割込要因指示値iに0を格納する。また第2CPUコア12は、S250にて、割込要因指示値iに格納されている値に1を加算した加算値を、割込要因指示値iに格納する。
そして第2CPUコア12は、S260にて、ROM22に記憶されている割込起床負荷テーブルLTを参照して、i番目の割込要因における自コアの負荷閾値を取得し、取得した負荷閾値を、RAM32に設けられた自コア負荷閾値Vth_0に格納する。なお、1番目の割込要因はクランク角信号の入力であり、2番目の割込要因はカム角信号の入力であり、3番目の割込要因はタイマ割込である。例えば、2番目の割込要因における第2CPUコア12の負荷閾値は80%である。
次に第2CPUコア12は、S270にて、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値より大きいか否かを判断する。ここで、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値以下である場合には、第2CPUコア12は、S350に移行する。
一方、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値より大きい場合には、第2CPUコア12は、S280にて、RAM32に設けられた他コア指示値jに0を格納する。また第2CPUコア12は、S290にて、他コア指示値jに格納されている値に1を加算した加算値を、他コア指示値jに格納する。
そして第2CPUコア12は、S300にて、第j他コアから、第j他コアの処理負荷CPU_Loadに格納されている値を取得し、取得した値を、RAM32に設けられた第j他コア処理負荷CPU_Load_jに格納する。なお、第2CPUコア12が実行する起床設定処理では、第1他コアは第3CPUコア13であり、第2他コアは第4CPUコア14であり、第3他コアは第1CPUコア11である。第1CPUコア11が実行する起床設定処理では、第1他コアは第2CPUコア12であり、第2他コアは第3CPUコア13であり、第3他コアは第4CPUコア14である。第3CPUコア13が実行する起床設定処理では、第1他コアは第4CPUコア14であり、第2他コアは第1CPUコア11であり、第3他コアは第2CPUコア12である。第4CPUコア14が実行する起床設定処理では、第1他コアは第1CPUコア11であり、第2他コアは第2CPUコア12であり、第3他コアは第3CPUコア13である。
次に第2CPUコア12は、S310にて、ROM22に記憶されている割込起床負荷テーブルLTを参照して、i番目の割込要因における第j他コアの負荷閾値を取得し、取得した負荷閾値を、RAM32に設けられた第j他コア負荷閾値Vth_jに格納する。
そして第2CPUコア12は、S320にて、第j他コア処理負荷CPU_Load_jに格納されている値が、第j他コア負荷閾値Vth_jに格納されている値以下であるか否かを判断する。
ここで、第j他コア処理負荷CPU_Load_jに格納されている値が、第j他コア負荷閾値Vth_jに格納されている値以下である場合には、第2CPUコア12は、S330にて、i番目の割込要因における割込起床コアを第j他コアに設定し、S350に移行する。具体的には、第2CPUコア12は、要求制御レジスタRRにおいて、i番目の割込要因に対応する割込要因フィールドに、第j他コアを示す値を設定する。
一方、第j他コア処理負荷CPU_Load_jに格納されている値が、第j他コア負荷閾値Vth_jに格納されている値より大きい場合には、第2CPUコア12は、S340にて、他コア指示値jに格納されている値が3以上であるか否かを判断する。
ここで、他コア指示値jに格納されている値が3未満である場合には、第2CPUコア12は、S290に移行する。一方、他コア指示値jに格納されている値が3以上である場合には、第2CPUコア12は、S350に移行する。
S350に移行すると、第2CPUコア12は、割込要因指示値iに格納されている値が予め設定された割込要因総数k以上であるか否かを判断する。ここで、割込要因指示値iに格納されている値が割込要因総数k未満である場合には、第2CPUコア12は、S250に移行する。一方、割込要因指示値iに格納されている値が割込要因総数k以上である場合には、第2CPUコア12は、起床設定処理を終了する。
次に、割込起床コアの設定の具体例を説明する。
あるタイミングにおける第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14の処理負荷CPU_Loadがそれぞれ、65%、85%、75%および50%であるとする。
初期状態では、要求制御レジスタRRの全ての割込要因フィールドIF1,IF2,IF3,・・・・に第1CPUコア11が設定されている。このため、第1CPUコア11のみが起床設定処理を実行する。
そして、第1CPUコア11の処理負荷CPU_Loadが65%であるため、第1CPUコア11は、クランク角信号の入力が割込要因となる処理と、カム角信号の入力が割込要因となる処理とを実行することができない。割込要因がクランク角信号の入力である場合における第1CPUコア11の負荷閾値が50%に設定され、割込要因がカム角信号の入力である場合における第1CPUコア11の負荷閾値が60%に設定されているためである。
上記タイミングにおける第2CPUコア12の処理負荷CPU_Loadは85%であるため、第1CPUコア11は、第2CPUコア12に処理を割り当てることができない。割込要因がクランク角信号の入力である場合における第2CPUコア12の負荷閾値が80%に設定され、割込要因がカム角信号の入力である場合における第2CPUコア12の負荷閾値が80%に設定されているためである。
上記タイミングにおける第3CPUコア13の処理負荷CPU_Loadは75%であるため、第1CPUコア11は、カム角信号の入力が割込要因となる処理を第3CPUコア13に割り当てる。すなわち、第1CPUコア11は、第3CPUコア13を指定するための値を割込要因フィールドIF2に設定する。割込要因がクランク角信号の入力である場合における第3CPUコア13の負荷閾値が70%に設定され、割込要因がカム角信号の入力である場合における第3CPUコア13の負荷閾値が80%に設定されているためである。
上記タイミングにおける第4CPUコア14の処理負荷CPU_Loadは50%であるため、第1CPUコア11は、クランク角信号の入力が割込要因となる処理を第4CPUコア14に割り当てる。すなわち、第1CPUコア11は、第4CPUコア14を指定するための値を割込要因フィールドIF1に設定する。割込要因がクランク角信号の入力である場合における第4CPUコア14の負荷閾値が60%に設定されているためである。
このように構成されたECU1は、CPUコア11~14と、ROM21~24と、要求制御レジスタRRと、割込コントローラ17とを備える。
ROM21~24は、複数の割込要因毎に、CPUコア11~14のそれぞれが実行するプログラムを指定するベクターテーブルVTを記憶する。
要求制御レジスタRRは、複数の割込要因毎に、割込要因に起因して割り込みを発生させるCPUコア11~14を指定するコア指定情報を記憶する。
割込コントローラ17は、割込要因が発生すると、要求制御レジスタRRに記憶されているコア指定情報に基づいて、発生した割込要因に対応するCPUコア11~14に対して割り込みを発生させる。
CPUコア11~14はそれぞれ、CPUコア11~14を処理実行コアとして、処理実行コアについて、割込要因に対応する割込処理を代行させる必要があるか否かを判断する。
CPUコア11~14は、割込処理を代行させる必要があると判断した場合に、複数の代行対象コアの中から、割込処理を実行することができる1つの代行対象コアを選択する。代行対象コアは、CPUコア11~14のうち処理実行コア以外のCPUコアである。例えば、第1CPUコア11が処理実行コアである場合には、第2CPUコア12、第3CPUコア13および第4CPUコア14が代行対象コアである。
CPUコア11~14は、選択された代行対象コアが割込処理を実行するようにコア指定情報を変更する。
このようにECU1では、割込コントローラ17は、割込要因が発生すると、コア指定情報に基づいて、発生した割込要因に対応するCPUコア11~14に対して割り込みを発生させる。これにより、ECU1では、割込要因に対応するCPUコア11~14が、ベクターテーブルVTに基づいて、割込要因に対応するプログラムを実行する。
そしてECU1は、CPUコア11~14のうちの任意の1つのCPUコアである処理実行コアについて、割込要因に対応する割込処理を代行させる必要がある場合に、処理実行コア以外のCPUコアである代行対象コアが割込処理を実行するようにコア指定情報を変更する。これにより、ECU1は、処理実行コアについて、割込要因に対応する割込処理を代行させる必要がある場合には、割込要因が発生したときに処理実行コアが実行していたプログラムを代行対象コアに実行させることができる。
これにより、ECU1は、処理実行コアの処理負荷が高い場合において、処理実行コアに割り当てられていた割込要因が発生したときに、処理実行コアに割り当てられていた割込要因に対応する割込処理を、処理実行コア以外のCPUコアに代行させることができる。このため、ECU1は、割込処理によるCPUコア11~14の処理負荷増大を抑制することができる。
またCPUコア11~14は、CPUコア11~14の自コア処理負荷CPU_Load_0を計測する。そしてCPUコア11~14はそれぞれ、計測された自コア処理負荷CPU_Load_0に基づいて、CPUコア11~14について、割込処理を代行させる必要があるか否かを判断する。さらにCPUコア11~14は、計測された第j他コア処理負荷CPU_Load_jに基づいて、割込処理を実行することができる1つの代行対象コアを選択する。
またCPUコア11~14は、エンジン回転数Neが予め設定された処理禁止判定値J2以下である場合に、割込処理を代行させる必要があるか否かを判断する処理と、割込処理を実行することができる1つの代行対象コアを選択する処理と、選択された代行対象コアが割込処理を実行するようにコア指定情報を変更する処理との実行を禁止する。これにより、ECU1は、エンジン回転数が高い場合のみに、割込処理を代行させるための処理を実行するため、ECU1の処理負荷を低減することができる。
以上説明した実施形態において、ベクターテーブルVTはプログラム指定情報に相当し、ROM21~24はプログラム指定記憶部に相当し、要求制御レジスタRRはコア指定記憶部に相当し、割込コントローラ17は割込制御部に相当する。
また、S270は代行判断部としての処理に相当し、S320は代行選択部としての処理に相当し、S330は変更部としての処理に相当する。
また、S10~S40,S110~S130は負荷計測部としての処理に相当し、S210は禁止部としての処理に相当する。
[第2実施形態]
以下に本開示の第2実施形態を図面とともに説明する。なお第2実施形態では、第1実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第2実施形態のECU1は、割込処理依頼パラメータRP1,RP2,RP3,・・・が追加された点と、起床依頼処理が追加された点と、起床設定処理が変更された点とが第1実施形態と異なる。
割込処理依頼パラメータRP1,RP2,RP3,・・・は、RAM15に記憶されている。図8に示すように、割込処理依頼パラメータRP1,RP2,RP3,・・・のそれぞれには、互いに異なる割込要因が設定されている。本実施形態では、割込処理依頼パラメータRP1は、クランク角信号の入力に対応している。割込処理依頼パラメータRP2は、カム角信号の入力に対応している。割込処理依頼パラメータRP3は、タイマ割込に対応している。
割込処理依頼パラメータRP1,RP2,RP3,・・・に格納される値によって、割込要因の発生に応じた処理の依頼(以下、処理依頼)が必要であるか不要であるかが設定される。本実施形態では、割込処理依頼パラメータRP1,RP2,RP3,・・・に1が格納されると、処理依頼が必要であると設定される。一方、割込処理依頼パラメータRP1,RP2,RP3,・・・に0が格納されると、処理依頼が不要であると設定される。
次に、CPUコア11~14が実行する起床依頼処理の手順を説明する。起床依頼処理は、CPUコア11~14の動作中において例えば1ms毎に繰り返し実行される処理である。なお、以下では、第3CPUコア13で代表して、起床依頼処理の手順を説明する。
起床依頼処理が実行されると、第3CPUコア13は、図9に示すように、まずS410にて、S210と同様にして、エンジン回転数Neが予め設定された処理禁止判定値J2を超えているか否かを判断する。ここで、エンジン回転数Neが処理禁止判定値J2以下である場合には、第3CPUコア13は、起床依頼処理を終了する。
一方、エンジン回転数Neが処理禁止判定値J2を超えている場合には、第3CPUコア13は、S420にて、S220と同様にして、自コア(すなわち、第3CPUコア13)が割込起床コアであるか否かを判断する。
ここで、自コアが割込起床コアでない場合には、第3CPUコア13は、起床設定処理を終了する。一方、自コアが割込起床コアである場合には、第3CPUコア13は、S430にて、S230と同様にして、自コアの処理負荷CPU_Loadに格納されている値を、RAM33に設けられた自コア処理負荷CPU_Load_0に格納する。
さらに第3CPUコア13は、S440にて、RAM15に設けられた割込処理依頼パラメータRP1,RP2,RP3,・・・を初期化する。具体的には、第3CPUコア13は、割込処理依頼パラメータRP1,RP2,RP3,・・・に0を格納する。
そして第3CPUコア13は、S450にて、RAM33に設けられた割込要因指示値iに0を格納する。また第3CPUコア13は、S460にて、割込要因指示値iに格納されている値に1を加算した加算値を、割込要因指示値iに格納する。
そして第3CPUコア13は、S470にて、S260と同様にして、ROM23に記憶されている割込起床負荷テーブルLTを参照して、i番目の割込要因における自コアの負荷閾値を取得し、取得した負荷閾値を、RAM33に設けられた自コア負荷閾値Vth_0に格納する。
次に第3CPUコア13は、S480にて、S270と同様にして、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値より大きいか否かを判断する。ここで、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値以下である場合には、第3CPUコア13は、S500に移行する。
一方、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値より大きい場合には、第3CPUコア13は、S490にて、i番目の割込要因における割込処理依頼パラメータRPiをセットして、S500に移行する。具体的には、第3CPUコア13は、割込処理依頼パラメータRPiに1を格納する。
S500に移行すると、第3CPUコア13は、割込要因指示値iに格納されている値が予め設定された割込要因総数k以上であるか否かを判断する。ここで、割込要因指示値iに格納されている値が割込要因総数k未満である場合には、第3CPUコア13は、S460に移行する。一方、割込要因指示値iに格納されている値が割込要因総数k以上である場合には、第3CPUコア13は、S510にて、割込処理依頼があるか否かを判断する。具体的には、第3CPUコア13は、割込処理依頼パラメータRP1,RP2,RP3,・・・を参照し、割込処理依頼パラメータRP1,RP2,RP3,・・・のうち、1が格納されている割込処理依頼パラメータが1つ以上存在する場合に、割込処理依頼があると判断する。
ここで、割込処理依頼がない場合には、第3CPUコア13は、起床依頼処理を終了する。一方、割込処理依頼がある場合には、第3CPUコア13は、S520にて、割込処理依頼をブロードキャストで他コアへ送信し、起床依頼処理を終了する。
次に、CPUコア11~14が実行する第2実施形態の起床設定処理の手順を説明する。第2実施形態の起床設定処理は、割込処理依頼を受信したときに実行される処理である。なお、以下では、第3CPUコア13で代表して、第2実施形態の起床設定処理の手順を説明する。
第2実施形態の起床設定処理が実行されると、第3CPUコア13は、図10に示すように、まずS610にて、自コアの処理負荷CPU_Loadに格納されている値を、RAM33に設けられた自コア処理負荷CPU_Load_0に格納する。
そして第3CPUコア13は、S620にて、RAM33に設けられた割込要因指示値iに0を格納する。また第3CPUコア13は、S630にて、割込要因指示値iに格納されている値に1を加算した加算値を、割込要因指示値iに格納する。
次に第3CPUコア13は、S640にて、i番目の割込要因における割込処理依頼パラメータRPiに格納されている値を取得する。そして第3CPUコア13は、S650にて、i番目の割込処理依頼があるか否かを判断する。具体的には、第3CPUコア13は、S640で取得した値が1である場合に、i番目の割込処理依頼があると判断し、S640で取得した値が0である場合に、i番目の割込処理依頼がないと判断する。
ここで、i番目の割込処理依頼がない場合には、第3CPUコア13は、S690に移行する。一方、i番目の割込処理依頼がある場合には、第3CPUコア13は、S660にて、ROM23に記憶されている割込起床負荷テーブルLTを参照して、i番目の割込要因における自コアの負荷閾値を取得し、取得した負荷閾値を、RAM33に設けられた自コア負荷閾値Vth_0に格納する。
次に第3CPUコア13は、S670にて、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値以下であるか否かを判断する。ここで、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値より大きい場合には、第3CPUコア13は、S690に移行する。
一方、自コア処理負荷CPU_Load_0に格納されている値が、自コア負荷閾値Vth_0に格納されている値以下である場合には、第3CPUコア13は、S680にて、i番目の割込要因における割込起床コアを自コアに設定し、S690に移行する。具体的には、第3CPUコア13は、要求制御レジスタRRにおいて、i番目の割込要因に対応する割込要因フィールドに、自コア(すなわち、第3CPUコア13)を示す値を設定する。
S690に移行すると、第3CPUコア13は、割込要因指示値iに格納されている値が予め設定された割込要因総数k以上であるか否かを判断する。ここで、割込要因指示値iに格納されている値が割込要因総数k未満である場合には、第3CPUコア13は、S630に移行する。一方、割込要因指示値iに格納されている値が割込要因総数k以上である場合には、第3CPUコア13は、起床設定処理を終了する。
このように構成されたECU1では、CPUコア11~14は、割込処理を代行させる必要があると判断した場合に、割込処理依頼を、他のCPUコア(すなわち、代行対象コア)へ送信する。そして他のCPUコアは、割込処理依頼を受信した場合に、割込処理を代行するか否かを判断する。
これにより、ECU1は、割込処理を代行するCPUコアを決定する処理をCPUコア11~14で分担することができ、処理負荷が1つのCPUコアに集中するのを抑制することができる。
以上説明した実施形態において、S480は代行判断部としての処理に相当し、S670は代行選択部としての処理に相当し、S680は変更部としての処理に相当し、S520は依頼送信部としての処理に相当し、S410は禁止部としての処理に相当する。
[第3実施形態]
以下に本開示の第3実施形態を図面とともに説明する。なお第3実施形態では、第1実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第3実施形態のECU1は、割込起床負荷テーブルLTの代わりに割込起床遅延テーブルDTを備える点と、アイドルタスクおよび起床設定処理が変更された点とが第1実施形態と異なる。
ROM21,22,23,24には、図11に示すように、割込起床遅延テーブルDTが記憶されている。割込起床遅延テーブルDTには、複数の割込要因毎に、CPUコア11~14に対する遅延時間閾値が設定されている。
本実施形態では、割込要因がクランク角信号の入力である場合には、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14のそれぞれに対して、20μs、10μs、20μsおよび40μsの遅延時間閾値が設定されている。
また、割込要因がカム角信号の入力である場合には、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14のそれぞれに対して、30μs、10μs、30μsおよび50μsの遅延時間閾値が設定されている。
また、割込要因がタイマ割込である場合には、第1CPUコア11、第2CPUコア12、第3CPUコア13および第4CPUコア14のそれぞれに対して、50μs、10μs、50μsおよび60μsの遅延時間閾値が設定されている。
次に、第3実施形態のアイドルタスクの手順を説明する。なお、以下では、第4CPUコア14で代表して、アイドルタスクの手順を説明する。
アイドルタスクが実行されると、第4CPUコア14は、図12に示すように、まずS810にて、RAM34に設けられた割込要因指示値mに0を格納する。また第4CPUコア14は、S820にて、割込要因指示値mに格納されている値に1を加算した加算値を、割込要因指示値mに格納する。
次に第4CPUコア14は、S830にて、i番目の割込要因の発生に応じて実行される処理(以下、i番目の割込処理)における第4CPUコア14の本来の割込起床時刻を、RAM34に設けられた第1起床時刻StartT1に格納する。割込要因がクランク角信号またはカム角信号の入力である場合には、本来の割込起床時刻は、信号のエッジが入力された時刻である。これらの時刻は、マイコンの機能によってキャプチャ時刻として格納される。割込要因がタイマ割込である場合には、本来の割込起床時刻は、予め設定された時刻である。
さらに第4CPUコア14は、S840にて、i番目の割込処理における第4CPUコア14の実際の割込起床時刻を、RAM34に設けられた第2起床時刻StartT2に格納する。実際の割込起床時刻は、i番目の割込処理のために第4CPUコア14が起床した時におけるマイコンのカウンタの値を読み込むことにより取得することができる。
そして第4CPUコア14は、S850にて、第2起床時刻StartT2に格納されている値から、第1起床時刻StartT1に格納されている値を減算した減算値を、RAM34に設けられた仮遅延時間Delay_tempに格納する。
さらに第4CPUコア14は、S860にて、エンジン回転数Neが予め設定されたリセット判定値J3(例えば、1000rpm)以下であるか否かを判断する。ここで、エンジン回転数Neがリセット判定値J3より大きい場合には、第4CPUコア14は、S870にて、仮遅延時間Delay_tempに格納されている値が、RAM34に設けられた第m遅延時間Delay_mに格納されている値以上であるか否かを判断する。ここで、仮遅延時間Delay_tempに格納されている値が、第m遅延時間Delay_mに格納されている値以上である場合には、第4CPUコア14は、S880にて、仮遅延時間Delay_tempに格納されている値を第m遅延時間Delay_mに格納し、S900に移行する。
一方、エンジン回転数Neがリセット判定値J3以下である場合には、第4CPUコア14は、S890にて、第m遅延時間Delay_mをリセットして、S900に移行する。具体的には、第4CPUコア14は、第m遅延時間Delay_mに、予め設定されたリセット値(例えば、5μsに相当する値)を格納する。
S900に移行すると、第4CPUコア14は、割込要因指示値mに格納されている値が予め設定された割込要因総数k以上であるか否かを判断する。ここで、割込要因指示値mに格納されている値が割込要因総数k未満である場合には、第4CPUコア14は、S820に移行する。一方、割込要因指示値mに格納されている値が割込要因総数k以上である場合には、第4CPUコア14は、アイドルタスクを終了する。
次に、第3実施形態の起床設定処理の手順を説明する。なお、以下では、第4CPUコア14で代表して、起床設定処理の手順を説明する。
第3実施形態の起床設定処理が実行されると、第4CPUコア14は、図13に示すように、まずS1010にて、S210と同様にして、エンジン回転数Neが処理禁止判定値J2を超えているか否かを判断する。ここで、エンジン回転数Neが処理禁止判定値J2以下である場合には、第4CPUコア14は、起床設定処理を終了する。
一方、エンジン回転数Neが処理禁止判定値J2を超えている場合には、第4CPUコア14は、S1020にて、S220と同様にして、自コア(すなわち、第4CPUコア14)が割込起床コアであるか否かを判断する。
ここで、自コアが割込起床コアでない場合には、第4CPUコア14は、起床設定処理を終了する。一方、自コアが割込起床コアである場合には、第4CPUコア14は、S1030にて、RAM34に設けられた割込要因指示値iに0を格納する。また第4CPUコア14は、S1040にて、割込要因指示値iに格納されている値に1を加算した加算値を、割込要因指示値iに格納する。
次に第4CPUコア14は、S1050にて、自コアの第i遅延時間Delay_iに格納されている値を、RAM34に設けられた自コア遅延時間CPU_Delay_0に格納する。
そして第4CPUコア14は、S1060にて、ROM24に記憶されている割込起床遅延テーブルDTを参照して、i番目の割込要因における自コアの遅延時間閾値を取得し、取得した負荷閾値を、RAM34に設けられた自コア遅延時間閾値Vth_0に格納する。
次に第4CPUコア14は、S1070にて、自コア遅延時間CPU_Delay_0に格納されている値が、自コア遅延時間閾値Vth_0に格納されている値より大きいか否かを判断する。ここで、自コア遅延時間CPU_Delay_0に格納されている値が、自コア遅延時間閾値Vth_0に格納されている値以下である場合には、第4CPUコア14は、S1150に移行する。
一方、自コア遅延時間CPU_Delay_0に格納されている値が、自コア遅延時間閾値Vth_0に格納されている値より大きい場合には、第4CPUコア14は、S1080にて、RAM34に設けられた他コア指示値jに0を格納する。また第4CPUコア14は、S1090にて、他コア指示値jに格納されている値に1を加算した加算値を、他コア指示値jに格納する。
そして第4CPUコア14は、S1100にて、第j他コアから、第j他コアの第i遅延時間Delay_iに格納されている値を取得し、取得した値を、RAM34に設けられた第j他コア遅延時間CPU_Delay_jに格納する。
次に第4CPUコア14は、S1110にて、ROM24に記憶されている割込起床遅延テーブルDTを参照して、i番目の割込要因における第j他コアの遅延時間閾値を取得し、取得した遅延時間閾値を、RAM34に設けられた第j他コア遅延時間閾値Vth_jに格納する。
そして第4CPUコア14は、S1120にて、第j他コア遅延時間CPU_Delay_jに格納されている値が、第j他コア遅延時間閾値Vth_jに格納されている値以下であるか否かを判断する。
ここで、第j他コア遅延時間CPU_Delay_jに格納されている値が、第j他コア遅延時間閾値Vth_jに格納されている値以下である場合には、第4CPUコア14は、S1130にて、i番目の割込要因における割込起床コアを第j他コアに設定し、S1150に移行する。
一方、第j他コア遅延時間CPU_Delay_jに格納されている値が、第j他コア遅延時間閾値Vth_jに格納されている値より大きい場合には、第4CPUコア14は、S1140にて、他コア指示値jに格納されている値が3以上であるか否かを判断する。
ここで、他コア指示値jに格納されている値が3未満である場合には、第4CPUコア14は、S1090に移行する。一方、他コア指示値jに格納されている値が3以上である場合には、第4CPUコア14は、S1150に移行する。
S1150に移行すると、第4CPUコア14は、割込要因指示値iに格納されている値が予め設定された割込要因総数k以上であるか否かを判断する。ここで、割込要因指示値iに格納されている値が割込要因総数k未満である場合には、第4CPUコア14は、S1040に移行する。一方、割込要因指示値iに格納されている値が予め設定された割込要因総数k以上である場合には、第4CPUコア14は、起床設定処理を終了する。
このように構成されたECU1では、CPUコア11~14は、複数の割込要因毎に、CPUコア11~14が割込処理を実行するときの遅延時間の最大値として、自コア遅延時間CPU_Delay_0を計測する。そしてCPUコア11~14はそれぞれ、計測された自コア遅延時間CPU_Delay_0に基づいて、CPUコア11~14について、割込処理を代行させる必要があるか否かを判断する。さらにCPUコア11~14は、割込処理を実行するときの遅延時間の最大値として計測された第i遅延時間Delay_iに基づいて、割込処理を実行することができる1つの代行対象コアを選択する。
これにより、ECU1は、第1実施形態と同様に、割込処理によるCPUコア11~14の処理負荷増大を抑制することができる。
なお、ECU1は、割込処理を代行させる必要があるか否かを遅延時間の最大値に基づいて判断することにより、現時点における遅延時間に基づいて判断する場合と比較して、割込処理を代行させる必要がないのにも関わらず代行させてしまう事態の発生を抑制することができ、ECU1の処理負荷を低減することができる。
以上説明した実施形態において、S1070は代行判断部としての処理に相当し、S1120は代行選択部としての処理に相当し、S1130は変更部としての処理に相当する。
また、S810~S900は最大遅延時間計測部としての処理に相当し、S1010は禁止部としての処理に相当する。
[第4実施形態]
以下に本開示の第4実施形態を図面とともに説明する。なお第4実施形態では、第3実施形態と異なる部分を説明する。共通する構成については同一の符号を付す。
第4実施形態のECU1は、アイドルタスクが変更された点が第3実施形態と異なる。
第4実施形態のアイドルタスクは、S850の代わりにS855の処理を実行する点と、S860~S890の処理が省略された点とが第3実施形態と異なる。
すなわち、第4実施形態のアイドルタスクでは、図14に示すように、S840が終了すると、第4CPUコア14は、S855にて、第2起床時刻StartT2に格納されている値から、第1起床時刻StartT1に格納されている値を減算した減算値を、RAM34に設けられた第m遅延時間Delay_mに格納し、S900に移行する。
このように構成されたECU1では、CPUコア11~14は、複数の割込要因毎に、CPUコア11~14が割込処理を実行するときの遅延時間として、自コア遅延時間CPU_Delay_0を計測する。そしてCPUコア11~14はそれぞれ、計測された自コア遅延時間CPU_Delay_0に基づいて、CPUコア11~14について、割込処理を代行させる必要があるか否かを判断する。さらにCPUコア11~14は、割込処理を実行するときの遅延時間として計測された第i遅延時間Delay_iに基づいて、割込処理を実行することができる1つの代行対象コアを選択する。
これにより、ECU1は、第1実施形態と同様に、割込処理によるCPUコア11~14の処理負荷増大を抑制することができる。
以上説明した実施形態において、S810~S840,S855,S900は遅延時間計測部としての処理に相当する。
以上、本開示の一実施形態について説明したが、本開示は上記実施形態に限定されるものではなく、種々変形して実施することができる。
[変形例1]
例えば上記実施形態では、ECU1が4つのCPUコアを備える形態を示したが、ECU1が2つ又は3つのCPUコアを備えるようにしてもよいし、ECU1が5つ以上のCPUコアを備えるようにしてもよい。
[変形例2]
上記実施形態では、第1他コア、第2他コア、第3他コアの順に処理負荷が負荷閾値以下であるか否かを判断し、処理負荷が負荷閾値以下となった時点で、処理負荷が負荷閾値以下となった他コアに割込処理を代行させる形態を示した。しかし、第1他コア、第2他コアおよび第3他コアの中で最も処理負荷が小さい他コアに割込処理を代行させるようにしてもよい。
本開示に記載のECU1およびその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサおよびメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のECU1およびその手法は、一つ以上の専用ハードウェア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載のECU1およびその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサおよびメモリと一つ以上のハードウェア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されてもよい。ECU1に含まれる各部の機能を実現する手法には、必ずしもソフトウェアが含まれている必要はなく、その全部の機能が、一つあるいは複数のハードウェアを用いて実現されてもよい。
上記実施形態における1つの構成要素が有する複数の機能を、複数の構成要素によって実現したり、1つの構成要素が有する1つの機能を、複数の構成要素によって実現したりしてもよい。また、複数の構成要素が有する複数の機能を、1つの構成要素によって実現したり、複数の構成要素によって実現される1つの機能を、1つの構成要素によって実現したりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加または置換してもよい。
上述したECU1の他、当該ECU1を構成要素とするシステム、当該ECU1としてコンピュータを機能させるためのプログラム、このプログラムを記録した半導体メモリ等の非遷移的実体的記録媒体、装置制御方法など、種々の形態で本開示を実現することもできる。
1…ECU、11…第1CPUコア、12…第2CPUコア、13…第3CPUコア、14…第4CPUコア、17…割込コントローラ、21,22,23,24…ROM、RR…要求制御レジスタ、VT…ベクターテーブル

Claims (6)

  1. 複数のCPUコア(11,12,13,14)と、
    複数の割込要因毎に、複数の前記CPUコアのそれぞれが実行するプログラムを指定するプログラム指定情報(VT)を記憶するように構成されたプログラム指定記憶部(21,22,23,24)と、
    複数の前記割込要因毎に、前記割込要因に起因して割り込みを発生させる前記CPUコアを指定するコア指定情報を記憶するように構成されたコア指定記憶部(RR)と、
    複数の前記CPUコアのうちの任意の1つの前記CPUコアを処理実行コアとして、前記処理実行コアについて、前記割込要因に対応する割込処理を代行させる必要があるか否かを判断するように構成された代行判断部(S270,S480,S1070)と、
    複数の前記CPUコアのうち前記処理実行コア以外の前記CPUコアを代行対象コアとして、前記割込処理を代行させる必要があると前記代行判断部が判断した場合に、1つまたは複数の前記代行対象コアの中から、前記割込処理を実行することができる1つの前記代行対象コアを選択するように構成された代行選択部(S320,S670,S1120)と、
    前記代行選択部により選択された前記代行対象コアが前記割込処理を実行するように前記コア指定情報を変更するように構成された変更部(S330,S680,S1130)と、
    前記割込要因が発生すると、前記変更部により変更された前記コア指定記憶部に記憶されている前記コア指定情報に基づいて、発生した前記割込要因に対応する前記CPUコアに対して前記割り込みを発生させるように構成された割込制御部(17)と
    を備える電子制御装置(1)。
  2. 請求項1に記載の電子制御装置であって、
    複数の前記CPUコアの処理負荷を計測するように構成された負荷計測部(S10~S40,S110~S130)を備え、
    前記代行判断部(S270,S480)は、前記負荷計測部により計測された前記処理負荷に基づいて、前記割込処理を代行させる必要があるか否かを判断し、
    前記代行選択部(S320,S670)は、前記負荷計測部により計測された前記処理負荷に基づいて、前記割込処理を実行することができる1つの前記代行対象コアを選択する電子制御装置。
  3. 請求項1に記載の電子制御装置であって、
    複数の前記CPUコアのそれぞれについて、複数の前記割込要因毎に、前記CPUコアが前記割込処理を実行するときの遅延時間を計測するように構成された遅延時間計測部(S810~S840,S855,S900)を備え、
    前記代行判断部(S1070)は、前記遅延時間計測部により計測された前記遅延時間に基づいて、前記割込処理を代行させる必要があるか否かを判断し、
    前記代行選択部(S1120)は、前記遅延時間計測部により計測された前記遅延時間に基づいて、前記割込処理を実行することができる1つの前記代行対象コアを選択する電子制御装置。
  4. 請求項1に記載の電子制御装置であって、
    複数の前記CPUコアのそれぞれについて、複数の前記割込要因毎に、前記CPUコアが前記割込処理を実行するときの遅延時間の最大値である最大遅延時間を計測するように構成された最大遅延時間計測部(S810~S850,S860~S900)を備え、
    前記代行判断部(S1070)は、前記最大遅延時間計測部により計測された前記最大遅延時間に基づいて、前記割込処理を代行させる必要があるか否かを判断し、
    前記代行選択部(S1120)は、前記最大遅延時間計測部により計測された前記最大遅延時間に基づいて、前記割込処理を実行することができる1つの前記代行対象コアを選択する電子制御装置。
  5. 請求項1~請求項4の何れか1項に記載の電子制御装置であって、
    前記処理実行コアが、前記代行判断部(S480)を備え、
    1つまたは複数の前記代行対象コアのそれぞれが、前記代行選択部(S670)を備え、
    前記処理実行コアは、前記割込処理を代行させる必要があると前記代行判断部が判断した場合に、割込処理依頼を、1つまたは複数の前記代行対象コアへ送信させるように構成された依頼送信部(S520)を備え、
    1つまたは複数の前記代行対象コアは、前記処理実行コアから前記割込処理依頼を受信した場合に、前記代行選択部に、前記代行対象コアの選択を実行させる電子制御装置。
  6. 請求項1~請求項5の何れか1項に記載の電子制御装置であって、
    前記電子制御装置は、車両に搭載され、
    前記車両のエンジン回転数が予め設定された処理禁止判定値以下である場合に、前記代行判断部、前記代行選択部および前記変更部による処理の実行を禁止するように構成された禁止部(S210,S410,S1010)を備える電子制御装置。
JP2019219680A 2019-12-04 2019-12-04 電子制御装置 Active JP7342669B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019219680A JP7342669B2 (ja) 2019-12-04 2019-12-04 電子制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019219680A JP7342669B2 (ja) 2019-12-04 2019-12-04 電子制御装置

Publications (2)

Publication Number Publication Date
JP2021089581A JP2021089581A (ja) 2021-06-10
JP7342669B2 true JP7342669B2 (ja) 2023-09-12

Family

ID=76220439

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019219680A Active JP7342669B2 (ja) 2019-12-04 2019-12-04 電子制御装置

Country Status (1)

Country Link
JP (1) JP7342669B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269549A (ja) 2007-03-29 2008-11-06 Seiko Epson Corp マイクロコンピュータ
WO2010010723A1 (ja) 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
JP2010134689A (ja) 2008-12-04 2010-06-17 Canon Inc 組込みシステム、その再構成方法及びプログラム
JP2019109744A (ja) 2017-12-19 2019-07-04 日立オートモティブシステムズ株式会社 自動車用電子制御装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09237255A (ja) * 1996-02-29 1997-09-09 Mitsubishi Electric Corp 並列計算機における動的負荷分散方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008269549A (ja) 2007-03-29 2008-11-06 Seiko Epson Corp マイクロコンピュータ
WO2010010723A1 (ja) 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
JP2010134689A (ja) 2008-12-04 2010-06-17 Canon Inc 組込みシステム、その再構成方法及びプログラム
JP2019109744A (ja) 2017-12-19 2019-07-04 日立オートモティブシステムズ株式会社 自動車用電子制御装置

Also Published As

Publication number Publication date
JP2021089581A (ja) 2021-06-10

Similar Documents

Publication Publication Date Title
US8856196B2 (en) System and method for transferring tasks in a multi-core processor based on trial execution and core node
US8949663B2 (en) Multi-core processor including a monitored processor core whose process result is to be monitored by a number of processors based on processing load
JP5515792B2 (ja) 内燃機関制御装置
JP2007034359A (ja) 分散制御装置
JP5817505B2 (ja) 内燃機関の制御装置
JP4241462B2 (ja) 制御ユニットおよびマイクロコンピュータ
JP2010216419A (ja) 内燃機関の制御装置
JP7342669B2 (ja) 電子制御装置
JP3791139B2 (ja) 車両用制御装置
GB2396445A (en) Interrupt controllers for prioritizing interrupt requests generated by a plurality of interrupt sources
JP2020135214A (ja) タスク管理装置
JP2010170320A (ja) プログラム、及び制御装置
US6754576B2 (en) Electronic control unit having different mask return processes
JP6519515B2 (ja) マイクロコンピュータ
JP7106868B2 (ja) 電子制御装置
WO2005013130A1 (ja) リアルタイム制御システム
US9531401B2 (en) Semiconductor integrated circuit device and data processing system
US5319787A (en) Processor for control including a data-flow processor
JP7226064B2 (ja) 電子制御装置
JP3783553B2 (ja) 情報処理装置
WO2017002939A1 (ja) 電子制御装置及びスタック使用方法
JP2013104387A (ja) エンジン制御装置
JP2019212032A (ja) マルチコアマイコンを備える電子制御装置
JP2001256063A (ja) 制御装置及びエンジン制御装置
JP6877475B2 (ja) 電子制御装置及びスタック使用方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220310

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230509

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: 20230801

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230814

R151 Written notification of patent or utility model registration

Ref document number: 7342669

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151