JP6729407B2 - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP6729407B2
JP6729407B2 JP2017004271A JP2017004271A JP6729407B2 JP 6729407 B2 JP6729407 B2 JP 6729407B2 JP 2017004271 A JP2017004271 A JP 2017004271A JP 2017004271 A JP2017004271 A JP 2017004271A JP 6729407 B2 JP6729407 B2 JP 6729407B2
Authority
JP
Japan
Prior art keywords
core
cores
abnormality
reset
operation mode
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
JP2017004271A
Other languages
English (en)
Other versions
JP2018112977A (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 JP2017004271A priority Critical patent/JP6729407B2/ja
Publication of JP2018112977A publication Critical patent/JP2018112977A/ja
Application granted granted Critical
Publication of JP6729407B2 publication Critical patent/JP6729407B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Retry When Errors Occur (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)

Description

本開示は、コアを複数備えるマイクロコンピュータに関する。
特許文献1のように、複数のコアを備え、複数の処理を各コアに割り当てることにより、複数の処理を並列に実行するように構成されたマイクロコンピュータが知られている。
従来、複数のコアを備えたマルチコアマイコンにおいて特定のコアで異常が発生した場合には、マイコン全体にリセットをかけて、特定のコアの復帰を試みていた。
特開2008−123439号公報
しかし、リセットをかけても特定のコアでの異常が継続する場合に、この特定のコアで発生した異常のために、その他のコアにおける処理が実行できなくなるおそれがあった。
本開示は、特定のコアで発生した異常が他のコアに及ぼす影響を抑制することを目的とする。
本開示の一態様は、1つ又は複数の演算処理を実行するコア(21,22,23)を複数備えるマイクロコンピュータ(3)であって、異常特定部(31)と、モード決定部(33)と、リセット部(34)と、起動部(35)と、処理設定部(45)とを備える。
異常特定部は、複数のコアのうち、異常が発生しているコアである異常発生コアを特定することができるように構成される。
モード決定部は、異常特定部により特定された異常発生コアに基づいて、異常発生コア以外のコアが演算処理を実行するための動作モードを決定するように構成される。
リセット部は、異常特定部が異常発生コアを特定した場合に、複数のコアをリセットさせるように構成される。
起動部は、複数のコアがリセットされた後に、複数のコアのうち、異常特定部により特定された異常発生コア以外のコアを起動させるように構成される。
処理設定部は、モード決定部によって決定された動作モードに基づいて、起動したコア毎に、異常発生コア以外のコアが起動した後にコアに実行させる1つ又は複数の演算処理を設定するように構成される。
このように構成された本開示のマイクロコンピュータは、異常発生コアを特定した場合に複数のコアがリセットされるため、少なくとも1つのコアで異常が発生したときにおける異常の影響を解消することができる。また、本開示のマイクロコンピュータは、複数のコアのうち異常発生コア以外のコアを起動させるため、リセット後に、異常発生コアに起因した異常が他のコアに及ぼす影響を抑制することができる。そして、本開示のマイクロコンピュータは、動作モードに基づいて、起動したコア毎に実行させる演算処理を設定する。このため、本開示のマイクロコンピュータは、リセット前に異常発生コアが実行していた演算処理を正常なコアに割り当てることが可能となり、リセット後に実行できなくなる演算処理を必要最低限に抑制することができる。
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本開示の技術的範囲を限定するものではない。
ECU1の構成を示すブロック図である。 コア21,22の構成を示すブロック図である。 異常対応処理を示すフローチャートである。 初期化処理を示すフローチャートである。 実行処理テーブルを示す図である。 正常時とフェールセーフ時において、実行タイミングが到来する毎にコア21,22,23が実行する処理を示す図である。 異常コアの処理を他コアで実行するための方法を説明する図である。 コア21〜23の動作を示す第1のシーケンス図である。 コア21〜23の動作を示す第2のシーケンス図である。
以下に本開示の実施形態を図面とともに説明する。
本実施形態の電子制御装置1(以下、ECU1)は、車両に搭載され、図1に示すように、マイクロコンピュータ3(以下、マイコン3)、入力回路4、出力回路5およびリセット回路6を備えている。ECUは、Electronic Control Unitの略である。
そしてマイコン3には、図示しないクランク角センサ、エアフロメータ、スロットル開度センサ、吸気圧センサおよび空燃比センサ等からの信号が、入力回路4を介して入力される。
クランク角センサは、エンジンのクランク軸の回転角を検出する。エアフロメータは、吸気管を通ってエンジンに供給される空気量を検出する。スロットル開度センサは、スロットルバルブの開度を検出する。吸気圧センサは、吸気管内の圧力を検出する。空燃比センサは、排ガス中の酸素濃度からエンジンに供給された燃料混合気の空燃比を検出する。
そしてマイコン3は、入力回路4を介して入力される上記各信号に基づいてエンジンの状態を検出するとともに、その検出結果に基づいて、スロットルバルブの開度を変えるスロットルモータ、各気筒内の点火プラグ、および各気筒内のインジェクタなどの各種アクチュエータを駆動するための駆動信号を出力回路5を介して出力してエンジンを作動させる。
リセット回路6は、マイコン3へリセット信号を出力することにより、マイコン3全体にリセットをかける。
またマイコン3は、CPU11、ROM12、RAM13、フラッシュROM14、I/O15及びこれらの構成を接続するバスラインなどから構成され、ROM12に記憶されたプログラムに基づいて、エンジンを制御するための各種制御処理を実行する。なお、フラッシュROM14は、記憶内容を書き換え可能な不揮発性メモリである。
マイクロコンピュータの各種機能は、CPU11が非遷移的実体的記録媒体に格納されたプログラムを実行することにより実現される。この例では、ROM12が、プログラムを格納した非遷移的実体的記録媒体に該当する。また、このプログラムの実行により、プログラムに対応する方法が実行される。
さらにCPU11は、プログラムを実行するための演算ユニットおよびレジスタなどを含むCPUコア(以下、コア)21,22,23を備える。コア21,22,23は、エンジンを制御するための各種制御処理を分散して実行する。そして、コア21,22,23は互いにデータ通信可能に接続されている。
またCPU11は、レジスタ24と、クロック供給回路25を備える。レジスタ24は、コア21,22,23からアクセス可能に構成されている。クロック供給回路25は、図示しない発振回路からマイコン3へ入力されたクロック信号をコア21,22,23へ供給する。クロック供給回路25は、レジスタ24に記憶されている後述の起動コア情報に基づいて、クロック信号を供給するコアを選択することが可能に構成されている。
コア21,22は、図2に示すように、コア異常検出部31、コア異常管理部32、動作モード判定部33、リセット部34、起動コア制御部35および処理実行部36を備える。なお、図2に示していないが、コア23は、コア21,22と同様に、コア異常検出部31、コア異常管理部32、動作モード判定部33、リセット部34、起動コア制御部35および処理実行部36を備える。
コア異常検出部31は、自コア異常検出機能41とコア相互監視機能42を備える。自コア異常検出機能41は、例えば、WDT割り込み及び例外割り込みにより、コア異常検出部31を搭載しているコア(以下、自コア)の異常を検出する。WDTは、Watch Dog Timerの略である。例外割り込みとしては、例えば、未定義命令例外、特権命令例外、アクセス例外および浮動小数例外などが挙げられる。またコア異常検出部31は、ロックステップ動作により異常を検出するようにしてもよい。以下、コア21,22,23のうち、自コア以外のコアを他コアという。
コア相互監視機能42は、コア21,22,23の間で相互に異常を監視する。具体的には、監視される側のコア相互監視機能42は、監視用のテスト演算を実行する。監視する側のコア相互監視機能42は、定期的に、監視される側のコア相互監視機能42が実行したテスト演算の結果を確認し、この演算結果が正しいか否かを判断する。なお、図2は、コア21のコア相互監視機能42とコア22のコア相互監視機能42との間で相互監視している状態を示している。しかし、コア21のコア相互監視機能42とコア22のコア相互監視機能42はそれぞれ、コア23のコア相互監視機能42との間で相互監視している。図2の矢印Y1は、コア21のコア相互監視機能42が、コア22のコア相互監視機能42を監視していることを示している。図2の矢印Y2は、コア22のコア相互監視機能42が、コア21のコア相互監視機能42を監視していることを示している。
コア異常検出部31は、自コア異常検出機能41またはコア相互監視機能42がコアの異常を検出すると、異常が発生しているコア(以下、異常発生コア)を示す異常コア情報を、自コアのコア異常管理部32へ出力する。図2の矢印Y3は、コア21のコア異常検出部31が異常コア情報をコア21のコア異常管理部32へ出力することを示している。図2の矢印Y4は、コア22のコア異常検出部31が異常コア情報をコア22のコア異常管理部32へ出力することを示している。
コア異常管理部32は、異常通知受信機能43を備える。異常通知受信機能43は、コア異常検出部31から異常コア情報が入力されると、後述するリセット前通知を他コアの異常通知受信機能43へ送信する。また異常通知受信機能43は、コア異常検出部31から異常コア情報が入力されると、異常コア情報を自コアの動作モード判定部33へ出力する。また異常通知受信機能43は、他コアからのリセット前通知を受信する。図2の矢印Y5は、コア21の異常通知受信機能43が、コア22の異常通知受信機能43へリセット前通知を送信することを示している。図2の矢印Y6は、コア22の異常通知受信機能43が、コア21の異常通知受信機能43へリセット前通知を送信することを示している。図2の矢印Y7は、コア21の異常通知受信機能43が、コア21の動作モード判定部33へ異常コア情報を送信することを示している。図2の矢印Y8は、コア22の異常通知受信機能43が、コア22の動作モード判定部33へ異常コア情報を送信することを示している。
動作モード判定部33は、動作モード判定機能44を備える。動作モード判定機能44は、コア異常管理部32から異常コア情報が入力されると、異常コア情報が示す異常発生コアに基づいて、リセット後の動作モードと、リセット後に起動させるコアとを決定する。リセット後に起動させるコアは、異常コア情報が示す異常発生コア以外のコアである。リセット後の動作モードを決定する処理についての詳細は後述する。
そして動作モード判定部33は、決定した動作モードを示す動作モード情報を、フラッシュROM14に設けられている動作モード記憶部51に記憶する。図2の矢印Y9は、コア21の動作モード判定部33が、動作モード情報を動作モード記憶部51に記憶することを示している。図2の矢印Y10は、コア22の動作モード判定部33が、動作モード情報を動作モード記憶部51に記憶することを示している。
また動作モード判定部33は、コア異常管理部32から異常コア情報が入力されると、リセットされる前に予め設定されたリセット前処理を実行する。リセット前処理としては、例えば、コアの起動後に必要な情報を保存したり、コアのポートを安全側に設定したりすることが挙げられる。リセット前処理が完了した後に、自コアのリセット部34へリセット要求を出力する。図2の矢印Y11は、コア21の動作モード判定部33が、コア21のリセット部34へリセット要求を出力することを示している。図2の矢印Y12は、コア22の動作モード判定部33が、コア22のリセット部34へリセット要求を出力することを示している。
リセット部34は、リセット要求が入力されると、リセット回路6へリセット要求を出力する。これにより、リセット回路6はマイコン3全体にリセットをかける。
また動作モード判定部33は、リセット後に起動させるコアを決定すると、リセット後に起動させるコアを示す起動コア情報を起動コア制御部35へ出力する。図2の矢印Y13は、コア21の動作モード判定部33が、コア21の起動コア制御部35へ起動コア情報を出力することを示している。図2の矢印Y14は、コア22の動作モード判定部33が、コア22の起動コア制御部35へ起動コア情報を出力することを示している。
起動コア制御部35は、起動コア情報が入力されると、起動コア情報をレジスタ24に記憶させる。これにより、クロック供給回路25は、リセット後に、レジスタ24に記憶されている起動コア情報を参照し、クロック信号を供給するコアを選択する。具体的には、起動コア情報がコア21,22を示す場合には、クロック供給回路25は、コア21,22へクロック信号を供給し、コア23へクロック信号を供給しない。これにより、リセット後に、コア21,22は起動し、コア23は起動しない。同様に、起動コア情報がコア21,23を示す場合には、クロック供給回路25は、コア21,23へクロック信号を供給し、コア22へクロック信号を供給しない。また、起動コア情報がコア22,23を示す場合には、クロック供給回路25は、コア22,23へクロック信号を供給し、コア21へクロック信号を供給しない。
処理実行部36は、実行処理判定機能45および処理実行機能46を備える。
処理実行部36は、動作モード記憶部51から動作モード情報を取得する。図2の矢印Y15は、コア21の処理実行部36が、動作モード記憶部51から動作モード情報を取得することを示している。図2の矢印Y16は、コア22の処理実行部36が、動作モード記憶部51から動作モード情報を取得することを示している。
実行処理判定機能45は、処理実行部36により取得された動作モード情報に基づいて動作モードを決定し、決定した動作モードに基づいて、処理実行機能46が実行する処理を設定する。図2の矢印Y17は、コア21の実行処理判定機能45が、コア21の処理実行機能46が実行する処理を設定することを示している。図2の矢印Y18は、コア22の実行処理判定機能45が、コア22の処理実行機能46が実行する処理を設定することを示している。
処理実行機能46は、実行処理判定機能45により設定された動作モードで、処理を実行する。
コア21,22,23を構成するこれらの要素を実現する手法はソフトウェアに限るものではなく、その一部又は全部の要素について、一つあるいは複数のハードウェアを用いて実現してもよい。例えば、上記機能がハードウェアである電子回路によって実現される場合、その電子回路は多数の論理回路を含むデジタル回路、又はアナログ回路、あるいはこれらの組合せによって実現してもよい。
次に、コア21,22,23が実行する異常対応処理の手順を説明する。異常対応処理は、コア21,22,23が起動した後に開始される処理である。
この異常対応処理が実行されると、コア21,22,23は、図3に示すように、まずS10にて、自コア異常検出機能41とコア相互監視機能42により、コアの異常を検出する。そしてS20にて、S10での検出結果に基づいて、異常発生コアが存在するか否かを判断する。ここで、異常発生コアが存在していない場合には、S10に移行する。一方、異常発生コアが存在する場合には、S30にて、異常発生コアに基づいて、リセット後の動作モードを決定する。具体的には、異常発生コアがコア23である場合には動作モードは第1フェールセーフモード、異常発生コアがコア22である場合には動作モードは第2フェールセーフモード、異常発生コアがコア21である場合には動作モードは第3フェールセーフモードであると決定する。以下、第1フェールセーフモード、第2フェールセーフモードおよび第3フェールセーフモードをまとめて単にフェールセーフモードともいう。
そしてS40にて、S30で決定した動作モードを示す動作モード情報を動作モード記憶部51に記憶する。さらにS50にて、異常発生コアに基づいて、リセット後に起動させるコア(以下、起動コア)を決定する。具体的には、異常発生コアがコア23である場合には起動コアはコア21,22であり、異常発生コアがコア22である場合には起動コアはコア21,23であり、異常発生コアがコア21である場合には起動コアはコア22,23であると決定する。
そしてS60にて、S50で決定した起動コアを示す起動コア情報をレジスタ24に記憶する。次にS70にて、異常発生コアを除く他コアへリセット前通知を送信する。これにより、リセット前通知を受信したコアは、リセット前処理を実行する。
さらにS80にて、上述のリセット前処理を実行する。そして、リセット前処理が終了すると、S90にて、リセット回路6へリセット要求を出力し、異常対応処理を終了する。
次に、コア21,22,23が実行する初期化処理の手順を説明する。初期化処理は、コア21,22,23が起動した直後に1回のみ実行される処理である。
この初期化処理が実行されると、コア21,22,23は、図4に示すように、まずS210にて、動作モード記憶部51から動作モード情報を取得する。そしてS220にて、動作モード記憶部51に動作モード情報が記憶されていたか否かを判断する。ここで、動作モード情報が記憶されていなかった場合には、S230にて、実行処理テーブルに基づいて、後述する正常モードで実行する処理を設定する。
実行処理テーブルは、ROM12に記憶されており、コア21,22,23により実行される処理が動作モード毎に設定されている。
例えば図5に示すように、実行処理テーブルは、正常モードでは、コア21は、処理A1,A2,A3,A4,A5,A6を順次実行し、コア22は、処理B1,B2,B3,B4,B5を順次実行し、コア23は、処理C1,C2,C3,C4,C5を順次実行するように設定されている。
また実行処理テーブルは、第1フェールセーフモードでは、コア21は、処理A1,C2,A3,A5,A6を順次実行し、コア22は、処理B1,C4,B4を順次実行し、コア23は、処理を実行しないように設定されている。
また実行処理テーブルは、第2フェールセーフモードでは、コア21は、処理A1,B2,A3,A5,A6を順次実行し、コア23は、処理C2,B4,C4を順次実行し、コア22は、処理を実行しないように設定されている。
また実行処理テーブルは、第3フェールセーフモードでは、コア22は、処理A1,B2,B4,A6を順次実行し、コア23は、処理C2,A3,A5,C4を順次実行し、コア21は、処理を実行しないように設定されている。
従って、S230では、例えば、コア21は、処理A1,A2,A3,A4,A5,A6を順次実行するように設定され、コア22は、処理B1,B2,B3,B4,B5を順次実行するように設定され、コア23は、処理C1,C2,C3,C4,C5を順次実行するように設定される。
なお、図5に示す実行処理テーブルは、コア21,22,23により実行される処理の一部を示している。例えば、コア21,22,23は、少なくとも、角度同期タスクと時間同期タスクを実行する。角度同期タスクは、予め設定された角度イベント生成条件が成立する毎に実行される。角度イベント生成条件は、例えば、クランク軸が予め設定されたイベント生成角度(例えば、30°CA)回転することである。時間同期タスクは、予め設定された時間イベント生成条件が成立する毎に実行される。時間イベント生成条件は、例えば、予め設定されたイベント生成時間(例えば、1ms)が経過することである。
そして、実行処理テーブルは、少なくとも、角度同期タスクで実行される処理と、時間同期タスクで実行される処理が設定されている。図5に示す実行処理テーブルは、例えば、時間同期タスクで実行される処理を示している。
一方、図4に示すように、S220にて、動作モード記憶部51に動作モード情報が記憶されていた場合には、S240にて、動作モード情報と実行処理テーブルに基づいて、第1フェールセーフモード、第2フェールセーフモードまたは第3フェールセーフモードで実行する処理を設定する。例えば、動作モード情報により示される動作モードが第2フェールセーフモードである場合には、コア21は、処理A1,B2,A3,A5,A6を順次実行するように設定され、コア23は、処理C2,B4,C4を順次実行するように設定される。
その後S250にて、S240で設定された処理の実行を処理実行部36に開始させて、初期化処理を終了する。
これにより、図6に示すように、コア21,22,23が正常(すなわち、正常モード)である場合には、実行タイミングが到来する毎に、コア21は、処理A1,A2,A3,A4,A5,A6を順次実行し、コア22は、処理B1,B2,B3,B4を順次実行し、コア23は、処理C1,C2,C3,C4,C5を順次実行する。
また、コア23が異常(すなわち、第1フェールセーフモード)である場合には、実行タイミングが到来する毎に、コア21は、処理A1,C2,A3,A5,A6を順次実行し、コア22は、処理B1,C4,B4を順次実行し、コア23は、処理を実行しない。
また、コア22が異常(すなわち、第2フェールセーフモード)である場合には、実行タイミングが到来する毎に、コア21は、処理A1,B2,A3,A5,A6を順次実行し、コア23は、処理C2,B4,C4を順次実行し、コア22は、処理を実行しない。
また、コア21が異常(すなわち、第3フェールセーフモード)である場合には、実行タイミングが到来する毎に、コア22は、処理A1,B2,B4,A6を順次実行し、コア23は、処理C2,A3,A5,C4を順次実行し、コア21は、処理を実行しない。
このようにして、ECU1は、フェールセーフ時には、正常時に実行する処理の中で退避走行に必要な処理のみを、正常なコアを使って実行させる。
ここで、異常となったコアの処理を他のコアで実行できるようにするための方法について説明する。説明を簡略化するために、図7に示すように、正常時には、コアAが処理A1,A2,A3を順次実行し、コアBが処理B1,B2を順次実行する場合を想定して説明する。
ROMには、プログラムPG1,PG2,PG3,PG4,PG5,PG6,PG7が記憶されているとする。プログラムPG1は、コアAが各種処理を実行するためのプログラムである。プログラムPG2は、コアBが各種処理を実行するためのプログラムである。プログラムPG3は、処理A1を実行するためのプログラムである。プログラムPG4は、処理A2を実行するためのプログラムである。プログラムPG5は、処理A3を実行するためのプログラムである。プログラムPG6は、処理B1を実行するためのプログラムである。プログラムPG7は、処理B2を実行するためのプログラムである。
実行処理テーブルは、ROMに記憶されており、コアAとコアBにより実行される処理が動作モード毎に設定されている。
この実行処理テーブルは、正常モードでは、コアAは処理A1,A2,A3を順次実行し、コアBは処理B1,B2を順次実行するように設定されている。また実行処理テーブルは、第1フェールセーフモードでは、コアAは処理A1,A2,B1を順次実行し、コアBは処理を実行しないように設定されている。また実行処理テーブルは、第2フェールセーフモードでは、コアBは処理A1,A2,B1を順次実行し、コアAは処理を実行しないように設定されている。
プログラムPG1は、処理数iを順次インクリメントしながら、実行処理テーブル[0]と、[動作モード]と、処理数[i]とにより、実行処理IDを特定して、特定した処理を実行する。同様に、プログラムPG2は、処理数iを順次インクリメントしながら、実行処理テーブル[1]と、[動作モード]と、処理数[i]とにより、実行処理IDを特定して、特定した処理を実行する。
なお、実行処理テーブル[0]は、実行処理テーブルにおいてコアAを指定する。実行処理テーブル[1]は、実行処理テーブルにおいてコアBを指定する。そして、[動作モード]は、「正常」、「第1フェールセーフモード」および「第2フェールセーフモード」の何れかに設定される。
例えば、プログラムPG1において、[動作モード]が「正常」である場合には、処理数[0],[1],[2]であるときにそれぞれ、実行処理テーブルを参照することにより、処理A1,A2,A3を示す実行処理IDが設定される。これにより、プログラムPG1において、処理実行(実行処理ID)により、処理A1,A2,A3が順次実行される。
同様に、プログラムPG2において、[動作モード]が「正常」である場合には、処理数[0],[1]であるときにそれぞれ、処理B1,B2を示す実行処理IDが設定される。これにより、プログラムPG2において、処理実行(実行処理ID)により、処理B1,B2が順次実行される。
また、プログラムPG1において、[動作モード]が「第1フェールセーフモード」である場合には、処理数[0],[1],[2]であるときにそれぞれ、実行処理テーブルを参照することにより、処理A1,A2,B1を示す実行処理IDが設定される。これにより、プログラムPG1において、処理実行(実行処理ID)により、処理A1,A2,B1が順次実行される。
同様に、プログラムPG2において、[動作モード]が「第2フェールセーフモード」である場合には、処理数[0],[1],[2]であるときにそれぞれ、処理A1,A2,B1を示す実行処理IDが設定される。これにより、プログラムPG2において、処理実行(実行処理ID)により、処理A1,A2,B1が順次実行される。
次に、コア21〜23の動作の具体例を説明する。
図8に示すように、まず、コア23で異常が発生し、コア22がコア23の異常を検出したとする。この場合に、コア22が、動作モードを決定するとともに、リセット後に起動させるコアを決定する。そして、コア22が、コア21へリセット前通知を送信する。リセット前通知を受信したコア21はリセット前処理を実行する。さらにコア22は、リセット前処理を実行した後にリセット回路6へリセット要求を送信する。これにより、リセット回路6は、マイコン3全体にリセットをかける。その後、コア21,22が起動する。起動したコア21,22はそれぞれ、コア22が決定した動作モードに基づいて、実行する処理を設定して、設定された処理の実行を開始する。
このように構成されたマイコン3は、処理A1,A2,A3,A4,A5,A6を実行するコア21と、処理B1,B2,B3,B4を実行するコア22と、処理C1,C2,C3,C4,C5を実行するコア23とを備える。
コア21,22,23のコア異常検出部31は、コア21,22,23のうち、異常発生コアを特定する。
コア21,22,23の動作モード判定部33は、特定された異常発生コアに基づいて、動作モードを決定する。
コア21,22,23のリセット部34は、異常発生コアを特定した場合に、リセット回路6へリセット要求を送信することにより、コア21,22,23をリセットさせる。
コア21,22,23の起動コア制御部35は、起動コア情報をレジスタ24に記憶することにより、コア21,22,23がリセットされた後に、コア21,22,23のうち、異常発生コア以外のコアを起動させる。
コア21,22,23の実行処理判定機能45は、決定された動作モードに基づいて、起動したコア毎に、異常発生コア以外のコアが起動した後にコアに実行させる処理を設定する。
このようにマイコン3は、異常発生コアを特定した場合にコア21,22,23がリセットされるため、1つのコアで異常が発生したときにおける異常の影響を解消することができる。またマイコン3は、コア21,22,23のうち異常発生コア以外のコアを起動させるため、リセット後に、異常発生コアに起因した異常が他のコアに及ぼす影響を抑制することができる。そしてマイコン3は、動作モードに基づいて、起動したコア毎に実行させる処理を設定する。このため、マイコン3は、リセット前に異常発生コアが実行していた処理を正常なコアに割り当てることが可能となり、リセット後に実行できなくなる処理を必要最低限に抑制することができる。
またマイコン3は、コア21,22,23がリセットされる前に、コア21,22,23がリセットされる前に実行するように予め設定されたリセット前処理を異常発生コア以外のコアに実行させる。これにより、マイコン3は、リセット待ちの期間においてマイコン3を適切な状態とすることができ、リセットに起因した異常の発生を抑制することができる。
以上説明した実施形態において、コア異常検出部31は異常特定部に相当し、動作モード判定部33はモード決定部に相当し、起動コア制御部35は起動部に相当し、実行処理判定機能45は処理設定部に相当する。
また、処理A1〜A6,B1〜B4,C1〜C5は演算処理に相当し、S70,S80は前処理実行部としての処理に相当する。
以上、本開示の一実施形態について説明したが、本開示は上記実施形態に限定されるものではなく、種々変形して実施することができる。
[変形例1]
例えば上記実施形態では、異常発生コアをリセット後に起動させないようにしたものを示したが、異常発生コアにおいて処理を無限ループに入れて異常発生コアを無効にするようにしてもよい。また、コアの動作モードに適切なものがあるマイコンでは、異常発生コアの動作モード(例えば、Sleep,Safe,Run等)を変更するようにしてもよい。
[変形例2]
上記実施形態では、異常発生コアに基づいて動作モードを決定するものを示したが、異常発生コアに加えて、異常の種類および現在のソフトの状況の少なくとも一つに基づいて、動作モードを決定するようにしてもよい。異常の種類は、例えば、WDT割り込み及び例外割り込み等である。現在のソフトの状況は、例えば、Init中、Shutdown中およびベース処理中などである。
[変形例3]
上記実施形態では、異常発生コアが1つである場合に動作モードとして3つのフェールセーフモードの何れかに決定するものを示したが、異常発生コアが2つ以上である場合を想定して、フェールセーフモードを設定するようにしてもよい。また、正常に動作するコアの組み合わせに応じて、4つ以上のフェールセーフモードの何れかに決定するようにしてもよい。
[変形例4]
上記実施形態では、異常発生コアが存在する場合に、正常なコアを用いて正常モード時よりは少ない処理を実行するものを示した。しかし、マイコンの処理負荷が小さい状況(例えば、エンジン回転速度が小さい状況)では、異常発生コアが実行していた全ての処理を正常なコアに割り当てることによって、フェールセーフモードであっても、正常モード時と同様に全ての処理を実行するようにしてもよい。
[変形例5]
上記実施形態では、コアで異常が発生すると動作モードをフェールセーフモードに切り替えるものを示したが、予め設定された切替判定回数のリセットを繰り返しても、同一コアで異常が継続する場合に、動作モードをフェールセーフモードに切り替えるようにしてもよい。また、上記の切替判定回数は、車両状態またはマイコン状態に応じて変えるようにしてもよい。例えば、車速が0km/hである場合、または、マイコンのイニシャル中は、安全にリセットをかけることができるため、切替判定回数を多くするようにしてもよい。
[変形例6]
上記実施形態では、マイコンが3つのコアを備えるものを示した。今後、マイコンに搭載されるコアの数が増えると、コアの故障発生確率も増加する。しかし、1つのコア当たりの処理比率は下がるため、例えば、1つのコアを予備のコアとして、他のコアが故障したときに、予備のコアで代替させるようにしてもよい。
[変形例7]
上記実施形態では、異常発生コアに基づいて動作モードを決定するものを示したが、異常発生コアにおける過去複数回の情報を確認して動作モードを決定するようにしてもよいし、異常発生コアにおける直前の1回の情報を確認して動作モードを決定するようにしてもよい。
[変形例8]
上記実施形態では、マイコンが3つのコアを備えるものを示した。しかし、1つのコアがマスタコアであり、残りのコアがスレーブコアであるという関係が設定されており、マスタコアがスレーブコアを監視している場合において、マスタコアで異常は発生したときには、マスタコアの機能をスレーブコアに移すようにしてもよい。二重故障が発生しないとすれば、退避走行が可能となる。
[変形例9]
上記実施形態では、異常が発生した場合に異常発生コアをリセット後に起動させないようにしたものを示したが、正常コアの一部もリセット後に起動させないようにしてもよい。
[変形例10]
上記実施形態では、異常を検出したコアが、動作モードを決定するとともに、リセット後に起動させるコアを設定するものを示した。しかし、コアに予め優先度を設定し、コアに異常が発生した場合には、異常が発生していないコアの中で最も優先度が高いコアが、動作モードを決定するとともに、リセット後に起動させるコアを設定するようにしてもよい。ここで、最も優先度が高いコアが動作モードを決定するように構成されている場合におけるコア21〜23の動作の具体例を説明する。
図9に示すように、まず、コア23で異常が発生し、コア22がコア23の異常を検出したとする。この場合に、コア22が、異常が発生していないコアの中で最も優先度が高いコアであるコア21を制御コアとして決定する。そして、コア22は、制御コアであるコア21へ異常発生通知を送信する。これにより、コア21は、動作モードを決定するとともに、リセット後に起動させるコアを設定する。さらにコア21は、リセット回路6へリセット要求を送信する。これにより、リセット回路6は、マイコン3全体にリセットをかける。その後、コア21,22が起動する。起動したコア21,22はそれぞれ、コア22が決定した動作モードに基づいて、実行する処理を設定して、設定された処理の実行を開始する。
[変形例11]
上記実施形態では、異常発生コアが検出された後に、リセット回路6がリセットをかけるものを示したが、リセット回路6がリセットをかける前に、異常発生コアの動作を停止するようにしてもよい。異常発生コアの動作を停止するために、例えば、異常発生コアへのクロック供給を停止するとよい。これにより、リセットをかける前に異常発生コアが異常な動作をしてしまうのを抑制することができる。
[変形例12]
上記変形例11では、リセットをかける前に異常発生コアの動作を停止させるものを示したが、異常発生コアの処理を無限ループに入れるようにしてもよい。
[変形例13]
上記実施形態では、異常が発生していない正常なコアがリセットをかける前にリセット前処理を実行するものを示したが、リセットをかける前に、正常なコアが、異常発生コアがリセット前に実行するべき処理も実行するようにしてもよい。これにより、リセット前においてマイクロコンピュータを適切な状態とすることができ、リセットに起因した異常の発生を抑制することができる。
また、上記実施形態における1つの構成要素が有する機能を複数の構成要素に分担させたり、複数の構成要素が有する機能を1つの構成要素に発揮させたりしてもよい。また、上記実施形態の構成の一部を省略してもよい。また、上記実施形態の構成の少なくとも一部を、他の上記実施形態の構成に対して付加、置換等してもよい。なお、特許請求の範囲に記載の文言から特定される技術思想に含まれるあらゆる態様が本開示の実施形態である。
上述したマイコン3の他、当該マイコン3を構成要素とするシステム、当該マイコン3としてコンピュータを機能させるためのプログラム、このプログラムを記録した媒体、異常時処理実行方法など、種々の形態で本開示を実現することもできる。
3…マイコン、21,22,23…コア、31…コア異常検出部、33…動作モード判定部、34…リセット部、35…起動コア制御部、45…実行処理判定機能、

Claims (3)

  1. 1つ又は複数の演算処理を実行するコア(21,22,23)を複数備えるマイクロコンピュータ(3)であって、
    複数の前記コアのうち、異常が発生している前記コアである異常発生コアを特定することができるように構成された異常特定部(31)と、
    前記異常特定部により特定された前記異常発生コアに基づいて、前記異常発生コア以外の前記コアが前記演算処理を実行するための動作モードを決定するように構成されたモード決定部(33)と、
    前記異常特定部が前記異常発生コアを特定した場合に、複数の前記コアをリセットさせるように構成されたリセット部(34)と、
    複数の前記コアがリセットされた後に、複数の前記コアのうち、前記異常特定部により特定された前記異常発生コア以外の前記コアを起動させるように構成された起動部(35)と、
    前記モード決定部によって決定された前記動作モードに基づいて、起動した前記コア毎に、前記異常発生コア以外の前記コアが起動した後に前記コアに実行させる1つ又は複数の前記演算処理を設定するように構成された処理設定部(45)と
    備え、
    前記動作モードは、前記異常発生コアで実行される複数の前記演算処理の少なくとも一部を、前記異常発生コア以外の前記コアで実行させるモードであるマイクロコンピュータ。
  2. 請求項1に記載のマイクロコンピュータであって、
    前記異常発生コアは、複数の前記コアがリセットされる前に、自身の動作が停止されるマイクロコンピュータ。
  3. 請求項1または請求項2に記載のマイクロコンピュータであって、
    複数の前記コアがリセットされる前に、前記コアがリセットされる前に実行するように予め設定されたリセット前処理を、少なくとも前記異常発生コア以外の前記コアに実行させるように構成された前処理実行部(S70,S80)を備えるマイクロコンピュータ。
JP2017004271A 2017-01-13 2017-01-13 マイクロコンピュータ Active JP6729407B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017004271A JP6729407B2 (ja) 2017-01-13 2017-01-13 マイクロコンピュータ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017004271A JP6729407B2 (ja) 2017-01-13 2017-01-13 マイクロコンピュータ

Publications (2)

Publication Number Publication Date
JP2018112977A JP2018112977A (ja) 2018-07-19
JP6729407B2 true JP6729407B2 (ja) 2020-07-22

Family

ID=62911159

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017004271A Active JP6729407B2 (ja) 2017-01-13 2017-01-13 マイクロコンピュータ

Country Status (1)

Country Link
JP (1) JP6729407B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7334552B2 (ja) * 2019-09-17 2023-08-29 株式会社デンソー 電子制御装置
JP2022098090A (ja) 2020-12-21 2022-07-01 日立Astemo株式会社 車両制御装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5347414B2 (ja) * 2008-10-03 2013-11-20 富士通株式会社 同期制御装置,情報処理装置及び同期管理方法
JP2011159136A (ja) * 2010-02-02 2011-08-18 Seiko Epson Corp 制御装置、制御装置の異常検出・復旧方法および電子機器
JP5960632B2 (ja) * 2013-03-22 2016-08-02 日立オートモティブシステムズ株式会社 車両用電子制御装置
JP6380141B2 (ja) * 2015-02-04 2018-08-29 株式会社デンソー 電子制御装置

Also Published As

Publication number Publication date
JP2018112977A (ja) 2018-07-19

Similar Documents

Publication Publication Date Title
JP5507830B2 (ja) マイクロコントローラ及び自動車制御装置
US9417946B2 (en) Method and system for fault containment
JP6266239B2 (ja) マイクロコンピュータ
JP6462870B2 (ja) 半導体装置及び診断テスト方法
KR101067264B1 (ko) 컴퓨터 시스템의 제어 방법 및 장치
US20150234661A1 (en) Semiconductor integrated circuit device and system using the same
US20150006978A1 (en) Processor system
JP2009541636A (ja) 内燃機関のエンジン制御部の機能を監視するための方法および装置
JP6729407B2 (ja) マイクロコンピュータ
US20090259899A1 (en) Method and apparatus for automatic scan completion in the event of a system checkstop
JP2011065528A (ja) マルチプロセッサシステム
JP2010186242A (ja) 計算機システム
JP2008112444A (ja) 信号処理システムを起動/再起動する方法及び信号処理システム
JP2008146542A (ja) マルチプロセッサシステム、プロセッサ装置及び例外処理方法
US8954794B2 (en) Method and system for detection of latent faults in microcontrollers
JP4422076B2 (ja) データ処理装置、電子制御ユニット、ならびに自動車
CN115904793A (zh) 一种基于多核异构系统的内存转存方法、系统及芯片
CN107423029B (zh) 计算单元
JP2013061783A (ja) マルチコア・プロセッサ
JP2010113419A (ja) マルチコア制御装置
US20210124635A1 (en) Multicore system
JP5978873B2 (ja) 電子制御装置
JP2011039667A (ja) 数値制御装置
JP2012108786A (ja) マイコン、処理同期方法
WO2013073009A1 (ja) マイコンシステム、監視マイコン

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190325

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200512

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200615

R151 Written notification of patent or utility model registration

Ref document number: 6729407

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250