特許第6243266号(P6243266)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立オートモティブシステムズ株式会社の特許一覧

<>
  • 特許6243266-電子制御装置及びメモリ診断方法 図000002
  • 特許6243266-電子制御装置及びメモリ診断方法 図000003
  • 特許6243266-電子制御装置及びメモリ診断方法 図000004
  • 特許6243266-電子制御装置及びメモリ診断方法 図000005
  • 特許6243266-電子制御装置及びメモリ診断方法 図000006
  • 特許6243266-電子制御装置及びメモリ診断方法 図000007
  • 特許6243266-電子制御装置及びメモリ診断方法 図000008
  • 特許6243266-電子制御装置及びメモリ診断方法 図000009
  • 特許6243266-電子制御装置及びメモリ診断方法 図000010
  • 特許6243266-電子制御装置及びメモリ診断方法 図000011
  • 特許6243266-電子制御装置及びメモリ診断方法 図000012
  • 特許6243266-電子制御装置及びメモリ診断方法 図000013
  • 特許6243266-電子制御装置及びメモリ診断方法 図000014
  • 特許6243266-電子制御装置及びメモリ診断方法 図000015
  • 特許6243266-電子制御装置及びメモリ診断方法 図000016
  • 特許6243266-電子制御装置及びメモリ診断方法 図000017
  • 特許6243266-電子制御装置及びメモリ診断方法 図000018
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6243266
(24)【登録日】2017年11月17日
(45)【発行日】2017年12月6日
(54)【発明の名称】電子制御装置及びメモリ診断方法
(51)【国際特許分類】
   G06F 11/22 20060101AFI20171127BHJP
【FI】
   G06F11/22 607B
   G06F11/22 607C
【請求項の数】3
【全頁数】16
(21)【出願番号】特願2014-58826(P2014-58826)
(22)【出願日】2014年3月20日
(65)【公開番号】特開2015-184796(P2015-184796A)
(43)【公開日】2015年10月22日
【審査請求日】2016年9月13日
(73)【特許権者】
【識別番号】509186579
【氏名又は名称】日立オートモティブシステムズ株式会社
(74)【代理人】
【識別番号】100129425
【弁理士】
【氏名又は名称】小川 護晃
(74)【代理人】
【識別番号】100087505
【弁理士】
【氏名又は名称】西山 春之
(74)【代理人】
【識別番号】100168642
【弁理士】
【氏名又は名称】関谷 充司
(74)【代理人】
【識別番号】100078330
【弁理士】
【氏名又は名称】笹島 富二雄
(72)【発明者】
【氏名】山▲崎▼ 賢史
(72)【発明者】
【氏名】園田 昌宏
(72)【発明者】
【氏名】戸上 和幸
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特開平04−256033(JP,A)
【文献】 特開2004−227488(JP,A)
【文献】 特開2009−211543(JP,A)
【文献】 特開昭62−058354(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
(57)【特許請求の範囲】
【請求項1】
複数の演算装置と、データを記憶するメモリとを含む電子制御装置であって、
各々の前記演算装置は、前記メモリを複数の領域に分割して所定のメモリ診断をする際、複数の定周期のジョブの実行中に何れかのジョブの中で各々の前記演算装置の処理能力に基づいて割り振られた前記メモリの領域を、個別に診断し、
前記メモリ診断の結果が異常であった場合には、該異常を診断した演算装置とは異なる他の演算装置が、前記異常と診断されたメモリの領域に対して前記メモリ診断を再度行うことを特徴とする電子制御装置。
【請求項2】
前記演算装置の前記処理能力は、前記演算装置の動作周波数と処理負荷との少なくとも一方である請求項1に記載の電子制御装置。
【請求項3】
電子制御装置の複数の演算装置が、メモリを複数の領域に分割して所定のメモリ診断をする際、複数の定周期のジョブの実行中に何れかのジョブの中で各々の前記演算装置の処理能力に基づいて割り振られた前記メモリの領域を、個別に診断し、
前記メモリ診断の結果が異常であった場合には、該異常を診断した演算装置とは異なる他の演算装置が、前記異常と診断されたメモリの領域に対して前記メモリ診断を再度行うことを特徴とするメモリ診断方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動車等の車両に搭載する電子制御装置及びそのメモリ診断方法に関する。
【背景技術】
【0002】
自動車等の車両に搭載する電子制御装置(ECU(Electronic Control Unit))等の一部には、システムの起動時にメモリの診断を行う機種がある。そして、複数のプロセッサを用いて、システムの起動時に初期化処理やメモリ診断処理にかかる時間を並列処理により短縮する技術が提案されている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平6−325007号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、単に並列処理をしたのでは、プロセッサのスペック等に応じて処理時間に差が生じて終了時間がばらつきやすくなり、待ち時間が発生しやすくなる。
【0005】
そこで、本発明は、自動車等の車両に搭載する電子制御装置において、メモリ診断の効率化を図ることができる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明による電子制御装置は、複数の演算装置と、データを記憶するメモリとを含む電子制御装置であって、各々の演算装置は、メモリを複数の領域に分割して所定のメモリ診断をする際、複数の定周期のジョブの実行中に何れかのジョブの中で各々の演算装置の処理能力に基づいて割り振られたメモリの領域を、個別に診断し、メモリ診断の結果が異常であった場合には、該異常を診断した演算装置とは異なる他の演算装置が、異常と診断されたメモリの領域に対してメモリ診断を再度行う。
【発明の効果】
【0007】
本発明によれば、メモリ診断の効率化を図ることができる技術を提供できる。
【図面の簡単な説明】
【0008】
図1】電子制御装置のハード構成例を示す図である。
図2】従来のマルチコアプロセッサにおけるメモリ診断の一例を説明する図である。
図3】第1実施形態におけるメモリ診断の処理の一例を説明する図である。
図4】第1実施形態におけるメモリ診断のタイミングチャートの一例を説明する図である。
図5】第2実施形態におけるメモリ診断の処理の一例を説明する図である。
図6】第3実施形態におけるメモリ診断の処理の一例を説明する図である。
図7】第3実施形態におけるメモリ診断のタイミングチャートの一例を説明する図である。
図8】第4実施形態におけるメモリ診断のタイミングチャート例を説明する図である。
図9】第5実施形態におけるメモリ診断の処理の一例を説明する図である。
図10】第5実施形態におけるメモリ診断の処理の一例を示すフローチャートである。
図11】第5実施形態におけるメモリ診断の処理の一例を示すサブルーチンのフローチャートである。
図12】第5実施形態におけるメモリ診断の処理の一例を説明する図である。
図13】第5実施形態におけるメモリ診断の処理の一例を示すサブルーチンのフローチャートである。
図14】第6実施形態におけるメモリ診断の処理の一例を説明する図である。
図15】第6実施形態におけるメモリ診断のタイミングチャートの一例を説明する図である。
図16】第6実施形態におけるメモリ診断の処理の一例を示すフローチャートである。
図17】第8実施形態におけるメモリ診断の処理の一例を説明する図である。
【発明を実施するための形態】
【0009】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
先ず、電子制御装置のハード構成例について、説明する。
図1に示す電子制御装置100は、例えば、自動車に搭載され、エンジン、自動変速機、燃料ポンプなどを電子制御するデバイスである。
電子制御装置100は、プロセッサ1と、ROM(Read Only Memory)2と、RAM(Random Access Memory)3と、バス4とを備える。プロセッサ1、ROM2及びRAM3は、バス4を介して、互いに接続されている。
【0010】
プロセッサ1は、電子制御装置100の統括的な制御を行うものである。ここで、プロセッサ1は、1つのCPUのパッケージに複数のCPUコア(例えば第1コア11、第2コア12)を搭載しており、物理的にCPUコアの数を増やすことで処理の高速化等を図るマルチコアプロセッサである。図1に示すプロセッサ1では、2つのCPUコアを搭載したデュアルコアを例示しているが、これに限定されず、例えば、3つのCPUコアを搭載したトリプルコア、4つのCPUコアを搭載したクアッドコアであってもよい。また、さらに多くのCPUコアを搭載してもよい。なお、CPUコア(例えば第1コア11、第2コア12)は、演算装置の一例である。
【0011】
ROM2は、例えば、フラッシュROM等、電源供給を遮断してもデータが保持される不揮発性の半導体メモリである。また、ROM2は、第1コア用領域21と、第2コア用領域22とを含む。第1コア用領域21及び第2コア用領域22は、例えば、プロセッサ1(第1コア11、第2コア12等)の処理能力に応じて、メモリ診断対象のメモリの領域が設定される。
【0012】
RAM3は、例えば、演算処理等に用いられるデータの一時的な作業領域となるメモリであって、電源供給が遮断されると、記憶内容が消える揮発性メモリである。より詳細には、RAM3は、アドレス等による番地情報に基づいて、任意の番地のメモリーセルに対して読み出しや書き込みといった操作ができる記憶装置である。なお、RAM3は、例えば、ダイナミックRAMやスタティックRAMであってもよい。バス4は、例えば、メモリアクセスバスを含む。
【0013】
また、電子制御装置100は、プロセッサ1、ROM2、RAM3等のハードウェアと、制御プログラム等のソフトウェアとが協働することにより、各種機能を実現する。この制御プログラムには、本実施形態のメモリ診断等の処理を行うプログラムが含まれる。したがって、プロセッサ1は、第1コア11及び第2コア12が制御プログラムを実行することで、メモリ診断等の処理が実現される。
【0014】
[従来例との比較]
ここで、本件に開示する技術をより深く理解するため、従来のマルチコアプロセッサにおけるメモリ診断について簡単に説明する。
図2に示すように、従来のマルチコアプロセッサにおけるメモリ診断では、一例として、メモリ2aの診断領域を均等に2分割し、マルチコアプロセッサの第1コア11が第1ROM領域21aを診断し、マルチコアプロセッサの第2コアが第2ROM領域22aを診断する。診断の仕方としては、例えばいわゆるチェックサム方式を採用している。チェックサム方式は、一例として、第1ROM領域21a、第2ROM領域22aのブロック毎に算出したチェックサム(合計値)と、予め算出しておいたチェックサム(期待値)とを各々比較する。チェックサム(合計値)とチェックサム(期待値)とが一致すれば、正常であると診断される。
【0015】
ここで、第1コア11と第2コア12とにおいて、例えば、演算処理能力の目安となるクロック周波数(動作周波数)が異なると、メモリの診断等の処理時間にばらつきが生じやすくなるため、上述した通り、先にメモリ診断を終了したコアは、他のコアによるメモリ診断の終了まで無駄な待ち時間が発生することとなる。
【0016】
そこで、以下に説明する実施形態において、メモリ診断の効率化を図ることができる技術等について説明する。また、例えばメモリ診断の高速化や異常時の処理についても説明する。
【0017】
[第1実施形態]
図3では、第1実施形態におけるメモリ診断の処理の一例として、ROM2の領域を模式的に示している。なお、図3では、図2に示したようなブロック毎のチェックサムにおける期待値の領域の図示を省略している(以下、同様とする)。また、図3では、第2コア12が診断するメモリのブロックを斜線で例示している。ここで、第1実施形態では、第1コア11の第1クロック周波数(f)を、一例として、240MHzとし、第2コア12の第2クロック周波数(f)を、一例として、80MHzとする。
【0018】
また、第1実施形態では、説明をわかりやすくするため、ROM2のメモリ領域を20ブロックに分割する(図3参照)。なお、メモリ領域を複数の領域に分割する仕方は一例であって、物理空間に応じて分割してもよく、又は、論理空間に応じて分割してもよい。つまり、メモリ診断の効率化に寄与すれば、メモリ領域を複数の領域に分割する仕方は、特に限定されない。
ここで、一例として20ブロックに分割した場合、第1コア11がメモリ診断する領域の比率rは、
=f/(f+f)=240MHz/(240+80)MHz=0.75
となる。
【0019】
一方、第2コア12がメモリ診断する領域の比率rは、
=f/(f+f)=80MHz/(240+80)MHz=0.25
となる。これにより、第1コア11がメモリ診断する領域のブロック数Bは、B=20×0.75=15ブロックとなる。また、第2コア12がメモリ診断する領域のブロック数Bは、B=20×0.25=5ブロックとなる。
なお、上記比率の場合、図1に示す第1コア用領域21のブロック数が15ブロックとなり、第2コア用領域22のブロック数が5ブロックとなる。
したがって、図3に示す通り、クロック周波数が、第2コア12よりも3倍高い第1コア11の方が、その分多くのブロックを単位時間当たりで診断することができる。この点に関し、図4を用いてより詳細に説明する。
【0020】
図4に示すメモリ診断のタイミングチャートにおいて、横軸は、時間軸を表しており、縦軸は、図1に示す第1コア11及び第2コア12が実行するブロックの診断時間を模式的に長方形で表している。具体的には、図1では、長方形の面積が大きいほど、診断時間を要することを示している。ここでは、電子制御装置100の起動時のメモリ診断を例示している。
図4(a)は、比較例として、第1コア11と第2コア12とで、診断領域を等分(10ブロックづつ)にした場合を例示している。図4(b)は、図3に示す通り、第1コア11が15ブロックを診断し、第2コア12が5ブロックを診断した場合を例示している。
【0021】
図4(a)の場合、第1コア11は、第2コア12と比較して、クロック周波数が3倍高いので、メモリの診断時間が略3分の1の時間で終了することになる。この場合、第1コア11は、第2コア12のメモリ診断のジョブが終了しないと、次のジョブを実行できない場合、無駄な待ち時間が発生する。
【0022】
一方、図4(b)の場合、第1コア11が15ブロックを診断し、第2コア12が5ブロックを診断する。これにより、第1コア11のメモリ診断の終了時と、第2コア12のメモリ診断の終了時とが、略一致する。
つまり、第1コア11と第2コア12とは、ROM2の領域を分割して、予め定められたチェックサム等を利用してメモリ診断をする際、各々のコアのクロック周波数に基づいて割り振られたメモリのブロックを、個別に診断する。したがって、第1実施形態では、クロック周波数によって、メモリ診断の領域の比率を変えることにより、マルチコアプロセッサにおけるメモリ診断の効率化を実現できる。この結果、第1実施形態では、メモリ診断の高速化も実現できる。なお、上記の比率の計算やメモリのブロックの割り振りは、例えば第1コア11と第2コア12との何れか一方が行えばよい。
【0023】
[第2実施形態]
第2実施形態では、各コアの演算処理の負荷(以下「処理負荷」という)に基づいて、診断する領域の比率を決定する。なお、電子制御装置100の動作時において、第1コア11、第2コア12は、各々演算処理にかかる負荷率を管理している。
【0024】
図5に示すメモリ診断の処理の一例として、具体的には、第1コア11の負荷率を60%とし、第2コア12の負荷率を20%とする。換言すると、各コアの使用可能な割合を示す余裕率が、第1コア11の場合、40%であり、第2コア12の場合、80%となる。また、第2実施形態でも、ROM2のメモリの領域を20ブロックに分割する場合について説明する。ここで、第2実施形態では、第1コア11の余裕率(s)を、一例として、40%とし、第2コア12の余裕率(s)を、一例として、80%とする。このようにした場合、第1コア11がメモリ診断する領域の比率rは、
=s/(s+s)=40/(40+80)=0.333≒33%
となる。
【0025】
一方、第2コア12がメモリ診断する領域の比率rは、
=s/(s+s)=80/(40+80)=0.666≒67%
となる。これにより、第1コア11がメモリ診断する領域のブロック数Bは、B=20×0.33=6.6≒7ブロックとなる。また、第2コア12がメモリ診断する領域のブロック数Bは、B=20×0.67=13.4≒13ブロックとなる。
なお、この場合、図5に示す通り、高負荷(負荷率60%)の第1コア11が7ブロックのメモリ診断をし、低負荷(負荷率40%)の第2コア12が13ブロックのメモリ診断を行う。これにより、第2実施形態においても、各コアの処理負荷によって、メモリ診断の領域の比率を変えることにより、メモリ診断の効率化を実現できる。
【0026】
[第3実施形態]
第3実施形態では、各コアのクロック周波数及び処理負荷を考慮して、メモリ診断を行う。
【0027】
図6に示す第3実施形態におけるメモリ診断の処理の一例では、第1実施形態と同様、第1コア11の第1クロック周波数(f)を、240MHzとし、第2コア12の第2クロック周波数(f)を、80MHzとする。また、第1コア11の余裕率を40%とし、第2コア12の余裕率を80%とする。
ここで、各コアのクロック周波数及び処理負荷を考慮するため、第1コア11の場合、先ず、第1実施形態で算出した75%と第2実施形態で算出した33%とを乗算することにより、24.75%の値(r)が得られる。また、第2コア12の場合、先ず、第1実施形態で算出した25%と第2実施形態で算出した67%とを乗算することにより、16.75%の値(r)が得られる。
【0028】
続いて、第1コア11がメモリ診断する領域の比率rは、
=r/(r+r)=24.75/(24.75+16.75)
=0.5963≒60%となる。
一方、第2コア12がメモリ診断する領域の比率rは、
=r/(r+r)=16.75/(24.75+16.75)
=0.4036≒40%となる。
【0029】
したがって、図6に示す通り、第1コア11がメモリ診断する領域のブロック数Bは、B=20×0.60=12ブロックとなり、第2コア12がメモリ診断する領域のブロック数Bは、B=20×0.40=8ブロックとなる。
図7では、第3実施形態におけるメモリ診断のタイミングチャートの一例を示している。ただし、説明の便宜上、図7では、待ち時間を省略し、太線の鎖線で区切った20ブロック単位のメモリの診断時間を例示している。具体的には、図7(a)は、比較例として、第1コア11と第2コア12とにおいて、メモリ診断の領域を等分(10ブロック)に分割した場合を例示している。図7(b)は、図6に示す通り、第1コア11が12ブロックをメモリ診断し、第2コア12が8ブロックをメモリ診断した場合を例示している。
これにより、第3実施形態では、各コアのクロック周波数及び処理負荷を考慮してメモリ診断の領域の比率を変えることにより、第1、2実施形態よりもさらにメモリ診断を効率化し、また、高速化も実現できる。
【0030】
[第4実施形態]
第4実施形態では、定周期のジョブの実行中にメモリ診断を実行する。
図8では、第4実施形態におけるメモリ診断のタイミングチャートの一例を示しており、プロセッサ1(第1コア11、第2コア12等)は、一例として、実行時間がそれぞれ2msec毎のジョブAと、5msec毎のジョブBと、10msec毎のジョブC等のジョブを実行する。なお、ジョブの優先度は、高い順番からジョブA、ジョブB、ジョブCとする。また、図8では、斜線のブロックで待ち時間を表している。ただし、図8では、説明の便宜上、ジョブCの待ち時間とジョブBの一部の待ち時間を、斜線のブロックであらわしている。また、図8に示す通り、2msec毎のジョブAは、A1、A2、A3、A4、A5、・・・というように、10msecの間に5回起動する。また、5msec毎のジョブBは、B1、B2、・・・というように、10msecの間に2回起動する。また、10msec毎のジョブCは、C1、・・・というように、10msecの間に1回起動する。
【0031】
そして、プロセッサ1は、一例として、実行時間が10msec等の定周期のジョブCの実行中にメモリ診断を行う場合、そのジョブCの中でメモリ診断の処理を並列に行う。
なお、図8(a)において、プロセッサ1は、時間0のタイミングで、ジョブA1を起動し、その後、10msec内に、2msec毎に起動するジョブA2からA5を実行する。また、プロセッサ1は、ジョブB1を時間0のタイミングで起動するが、待ち時間により、ジョブA1の終了後にジョブB1を実行する。また、プロセッサ1は、ジョブB2を時間軸で5msecのタイミングで起動するが、途中、ジョブA4の起動により待ち時間が発生したため、2回に分けて実行する。
さらに、プロセッサ1は、ジョブC1を時間0のタイミングで起動するが、待ち時間により、10msecの間に4回に分けて実行する。
【0032】
図8(b)は、ジョブA、B及びCの各実行時間の合計を示している。以上より、プロセッサ1は、定周期のジョブの実行中にメモリ診断を行う場合、そのジョブの中でメモリ診断の処理を並列に行うので、メモリ診断の効率化を実現できる。
【0033】
なお、図8において、単位時間(T1)、実行時間(T2)、空き時間(T3)とした場合、負荷率(%)=(T2)/(T1)となり、余裕率(%)=(T1)/(T2)となる。この場合、プロセッサ1は、実行時間(T2)+空き時間(T3)の期間内の負荷率(又は、余裕率)に基づいて、次の周期でのメモリ診断における比率を決定してもよい。これにより、メモリ診断の効率化がさらに図られる。
【0034】
[第5実施形態]
第5実施形態では、各コアのクロック周波数及び処理負荷を考慮して、メモリ診断する領域の比率を決定する。
【0035】
図9に示すメモリ診断の処理の一例において、プロセッサ1は、メモリ診断する領域のブロックの比率を1度決定した場合(図9(a)参照)、全領域のメモリ診断が終了するまで、その比率を変えずにメモリ診断をしてもよい(図9(b)、(c)参照)。
具体的には、図9に示す処理において、10msecの定周期のジョブでメモリ診断をする場合、プロセッサ1(第1コア11、第2コア12等)は、図10に示すフローチャートの処理(以下「フローの処理」という)を実行する。
【0036】
ステップS101:プロセッサ1は、所定の演算処理を実行する。具体的には、プロセッサ1では、例えば、各コアが処理負荷を算出する。
ステップS102:プロセッサ1は、メモリ診断処理のサブルーチンを実行する。
そして、プロセッサ1は、図10に示すフローの処理を一旦終了する。そして、プロセッサ1は、再度、10msecの定周期のジョブでメモリ診断を行うため、図10に示すフローの処理を開始する。
【0037】
次に、図11に示すメモリ診断処理のサブルーチンについて、説明する。
ステップS103:プロセッサ1は、ROM2内で当該診断対象となるメモリの全領域について診断が終了したか否かを判定する。診断が終了していない場合(ステップS103:No)、後述するステップS107に移行する。一方、診断が終了した場合(ステップS103:Yes)、ステップS104の処理に移行する。
ステップS104:プロセッサ1は、各コアのクロック周波数及び処理負荷に基づいて、診断領域の分担を決定する。
ステップS105:プロセッサ1は、各領域の診断済みの情報を消去する。
ステップS106:プロセッサ1は、カウンタXの初期化処理を行う。なお、カウンタXは、例えば、メモリブロックのカウンタ値である(以下、同様とする)。
ステップS107:プロセッサ1は、第Nコアの分担領域の診断が終了したか否かを判定する。ここでは、図1に示す通り、プロセッサ1は、デュアルコアプロセッサであるので、ここでは、第1コア11、第2コア12が対象となる。診断が終了した場合(ステップS107:Yes)、メモリ診断処理のサブルーチンを終了し、ステップS102に戻り、図10に示すフローの処理を一旦終了する。一方、診断が終了していない場合(ステップS107:No)、ステップS108の処理に移行する。
ステップS108:プロセッサ1は、カウンタXに基づいて、分割したブロックのメモリの領域Xを診断する。ここで、カウンタXとメモリの領域Xとは、アドレス番号等で関連付けられている。
ステップS109:プロセッサ1は、カウンタXの更新処理を行う。そして、メモリ診断処理のサブルーチンを終了し、ステップS102に戻り、図10に示すフローの処理を一旦終了する。
【0038】
以上より、プロセッサ1は、メモリ診断する領域のブロックの比率を1度決定した場合、全領域のメモリ診断が終了するまで、その比率を変えずにメモリ診断することができる。ただし、メモリ診断の最中に処理負荷が変動した場合、メモリ診断の時間にばらつきが生じるおそれがある。
【0039】
そこで、図12において、プロセッサ1は、メモリ診断する領域のブロックの比率を、メモリ診断の周期毎に見直してもよい。具体的には、メモリ診断の開始時には、図12(a)に示す通り、ROM2のメモリにおいて、第1コア11がメモリ診断する領域(第1コア用領域21)は、60%であり、第2コア12がメモリ診断する領域(第2コア用領域22)は、40%である。その後、図12(b)に示す通り、第1コア11の処理負荷が減った場合、プロセッサ1は、メモリ診断する領域のブロックの比率について、第1コア11の分担の比率を60%から70%に増やし、第2コア11の分担の比率を40%から30%に減らす。そして、プロセッサ1は、メモリ診断を最後まで実行する(図12(c)参照)。
【0040】
具体的には、10msecの定周期のジョブでメモリ診断を行う場合、プロセッサ1は、上述した図10に示すフローの処理を行う。ただし、ステップS102のメモリ診断処理におけるサブルーチンの処理が、上述した図11に示すサブルーチンと一部異なるので、以下、図13に示すサブルーチンのフローチャートに基づいて説明する。
【0041】
ステップS201:プロセッサ1は、ROM2における当該対象のメモリの全領域について診断が終了したか否かを判定する。診断が終了していない場合(ステップS201:No)、後述するステップS204に移行する。一方、診断が終了した場合(ステップS201:Yes)、ステップS202の処理に移行する。
ステップS202:プロセッサ1は、各領域の診断済みの情報を消去する。
ステップS203:プロセッサ1は、カウンタXの初期化処理を実行する。
ステップS204:プロセッサ1は、各コアのクロック周波数及び処理負荷に基づいて、診断領域の分担を決定する。
ステップS205:プロセッサ1は、第Nコア(第1コア11、第2コア12)の分担領域の診断が終了したか否かを判定する。診断が終了した場合(ステップS205:Yes)、メモリ診断処理のサブルーチンを終了し、ステップS101に戻り、図10に示すフローの処理を一旦終了する。一方、診断が終了していない場合(ステップS205:No)、ステップS206の処理に移行する。
ステップS206:プロセッサ1は、カウンタXに基づいて、分割したブロックのメモリの領域Xを診断する。
ステップS207:プロセッサ1は、カウンタXの更新処理を行う。そして、メモリ診断処理のサブルーチンを終了し、ステップS102に戻り、図10に示すフローの処理を一旦終了する。
【0042】
なお、メモリ診断の周期毎に比率を見直す場合、例えば、10msec毎であってもよく、又は、100msec毎であってもよく、メモリ診断に適した時間であれば、任意に設定してよい。
以上より、第5実施形態では、各コアのクロック周波数及び処理負荷を考慮して、メモリ診断する領域のブロックの比率を決定するので、メモリ診断の効率化や高速化を実現できる。
【0043】
[第6実施形態]
第6実施形態では、メモリ診断する領域のブロックの比率を予め決定せずに、各コアのバックグランド処理により、メモリ診断を行う。つまり、第1コア11及び第2コア12は、当該ブロックの診断が終了した場合、次の未診断ブロックを診断する。
【0044】
図14に示す第6実施形態におけるメモリ診断の処理の一例において、図14(a)に示す通り、第1コア11がROM2の第1ブロック目(n=1)の診断を開始し、第2コア12がROM2の第2ブロック目(n=2)の診断を開始する。なお、説明をわかりやすくするため、図14(a)から図14(c)において、各ブロックに通し番号を付与している。
ここで、図14(b)において、第1コア11が第1ブロック目の診断を終了した場合、第2コア12が第2ブロック目を診断中であれば、第1コア11は、次の未診断の第3ブロック目(n=3)を診断する。また、図14(c)において、第2コア12が第2ブロック目の診断を終了した場合、第1コア11が例えば第6ブロック目(n=6)を診断中であれば、第2コア11は、次の未診断の第7ブロック目(n=7)を診断する。以下、同様に処理をしていく。
【0045】
なお、診断済みのブロックの判定方法は、例えば、メモリブロック毎に対になるフラグを持つことにより実現できる。診断開始フラグは、診断開始時にセットし、診断終了時に診断終了フラグをセットする。これにより、第1コア11、第2コア12は、診断開始フラグがセットされていないブロックを未診断のブロックであると判断できる。
【0046】
図15に示す第6実施形態におけるメモリ診断のタイミングチャートの一例において、第1コア11、第2コア12は、空き時間(T3)にメモリ診断の処理を行う。
具体的には、プロセッサ1は、図16に示すバックグランド処理のフローの処理を行う。なお、図15は、図8と同様のタイミングチャートであるが、バックグランド処理が追加されている。
【0047】
ステップS301:プロセッサ1は、ROM2を分割したブロックのメモリの領域Xを診断する。
ステップS302:プロセッサ1は、ROM2における当該対象のメモリの全領域について診断が終了したか否かを判定する。診断が終了していない場合(ステップS302:No)、後述するステップS305に移行する。一方、診断が終了した場合(ステップS302:Yes)、ステップS303の処理に移行する。
ステップS303:プロセッサ1は、各領域の診断済みの情報を消去する。
ステップS304:プロセッサ1は、カウンタXの初期化を行う。そして、図16に示すフローの処理を終了する。そして、プロセッサ1は、再度バックグランドの処理の実行時に、図16に示すフローの処理を開始する。つまり、図16のフローの処理は、終了の指示がない限り、常に繰り返されて実行される。
ステップS305:プロセッサ1は、カウンタXの更新処理を行う。
ステップS306:プロセッサ1は、領域Xが末診断であるか否かを判定する。領域Xが診断済みである場合(ステップS306:No)、ステップS302の処理に戻る。一方、領域Xが末診断の場合(ステップS306:Yes)、図16に示すフローの処理を終了する。そして、プロセッサ1は、再度バックグランドの処理の実行時に、図16に示すフローの処理を開始する。
以上より、第6実施形態では、空き時間にバックグランド処理にてメモリ診断を行うことにより、メモリ診断の効率化を実現できる。
【0048】
[第7実施形態]
第7実施形態では、複数コアにより、相互にメモリ診断を行う。例えば、第1コア11によるメモリ診断の結果が異常であった場合には、その異常を診断した第1コア11とは異なる第2コア12が、異常と診断されたメモリの領域に対してメモリ診断を再度行う。
【0049】
また、図1において、第1コア11が第2コア用領域22のメモリ診断を行い、第2コア12が第1コア用領域21のメモリ診断を行うようにしてもよい。また、第7実施形態では、各コアが使用するROM2の領域について、そのROM2の領域を使用しない他のコアがメモリ診断を行えればよい。
【0050】
以上より、第7実施形態によれば、例えば、第1コア11の方に異常が発生した場合、第2コア12が第1コア用領域21のメモリ診断することで、正常であれば、第1コア11の方に異常が発生したことがわかる。したがって、異常が発生した第1コア11が、その領域を正常と誤診断することを防ぐことができるので、メモリ診断の効率化を実現できる。なお、図1において、第1コア11、第2コア12がそれぞれ、第1コア用領域21及び第2コア領域22についてクロスチェックを行うようにしてもよい。これにより、メモリ診断の精度を向上させることができる。
【0051】
[第8実施形態]
第8実施形態では、メモリ診断に関して、RAM3で行う。第8実施形態におけるメモリ診断の処理の一例において、図17に示す第1コア11と第2コア12とは、RAM3のメモリ診断の領域を例えば均等に2つに分割して、それぞれ、メモリ診断を行う。具体的には、第1コア11は、第1RAM領域31をメモリ診断し、第2コア12は、第2RAM領域32をメモリ診断する。この際、第1コア11と第2コア12とは、上記実施形態の何れかのメモリ診断方法を適宜適用することができる。
【0052】
なお、第1コア11と第2コア12とは、RAM診断の一例として、検査値を読み込んでから読み出して比較するベリファイ方式で行う。図17から明らかなように、各コアが分担して診断すれば、全領域の診断終了までの時間が短縮できる。さらに、第8実施形態では、上述したROM2のメモリ診断と同様、メモリ診断する領域の分担比率を変えることにより、効率的に診断できる。また、第8実施形態では、デュアルコアを例示しているが、これに限定されず、他のマルチコアの構成であってもよい。
以上より、第8実施形態によれば、RAM3のメモリ診断においても、上述したROM2のメモリ診断と同様の効果が得られる。
【符号の説明】
【0053】
1…プロセッサ
11…第1コア
12…第2コア
2…ROM
21…第1コア用領域
22…第2コア用領域
3…RAM
4…バス
100…電子制御装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17