(57)【要約】【課題】自動車用電子制御装置において診断処理などの重要演算処理の信頼性を向上させ、自動車制御の安全性を向上させる。【解決手段】ＲＯＭ及びＲＡＭのメモリ領域を制御プログラム用の通常制御領域（通常演算領域）と診断プログラム用のハイセーフティ領域（重要演算領域）とに切り分ける。そして、ハイセーフティ領域に、ハイセーフティ領域のメモリ診断を行うハイセーフティ領域用診断プログラム及び全領域のメモリ診断を行う通常診断用プログラムを実装し、ハイセーフティ領域は２重にメモリ診断を行わせる。【選択図】図３
2015022622.tif 000002
【特許請求の範囲】
【請求項１】
メモリの領域が通常演算領域と重要演算領域との２領域に分けられ、前記重要演算領域は当該重要演算領域に実装されたメモリ診断処理により診断される、自動車用電子制御装置。
【請求項２】
前記メモリとしてのＲＡＭ上の重要演算領域はデータを多重化して保存する、請求項１記載の自動車用電子制御装置。
【請求項３】
前記メモリとしてのＲＡＭの通常演算領域と重要演算領域との間におけるデータの受け渡しを、データチェック機能を有するインターフェースによって行う、請求項１又は請求項２記載の自動車用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自動車用電子制御装置における機能安全を保障する技術に関する。
【背景技術】
【０００２】
特許文献１には、自動車コンピュータシステムの信頼性を改善する方法として、マイクロプロセッサによってフラッシュメモリを読み取るときに、同じメモリユニット又は別個のメモリユニットにおいてパリティビットを各々のデータ行について記憶し、メモリアクセス中に、同様にパリティビットを発生させ、エラーチェックのために記憶された検査データと比較することで、データメモリ内でデータを行毎に保護する、電子式自動車制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２００５−５０３６２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、パリティビットなどの誤り検出符号を用いたメモリ診断を行う場合でも、係る診断を行うプログラム（ソフトウェア部品）が故障する可能性があるため、診断プログラムが正常に機能しているかを診断することが必要となり、更に、診断プログラムの診断を行うプログラムが実装されるメモリ上の領域は十分に保護された信頼性の高いものでなければならない。
【０００５】
本発明は上記実情に鑑みなされたものであり、自動車用電子制御装置において診断処理などの重要演算処理の信頼性を向上させることを目的とする。
【課題を解決するための手段】
【０００６】
そのため、本願発明は、メモリの領域が通常演算領域と重要演算領域との２領域に分けられ、前記重要演算領域は当該重要演算領域に実装されたメモリ診断処理により診断されるようにした。
【発明の効果】
【０００７】
上記発明によると、診断処理などの重要演算処理の信頼性が向上し、以って、電子制御装置における制御の安全性の保障を高めることができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態における自動車用電子制御装置のハードウェアシステムを示すブロック図である。
【図２】本発明の実施形態におけるソフトウェアコンポーネント（処理機能）を示すブロック図である。
【図３】本発明の実施形態におけるＲＯＭ上のプログラム配置を示すブロック図である。
【図４】本発明の実施形態におけるＲＯＭ上のプログラム配置を示すブロック図である。
【図５】本発明の実施形態におけるマルチコア（デュアルコア）でのメモリ構成を示す図である。
【図６】本発明の実施形態におけるマルチコア（デュアルコア）でのＲＯＭ上のプログラム配置を示すブロック図である。
【図７】本発明の実施形態における処理の流れ、データの受け渡し、及び、データの多重化を示すブロック図である。
【図８】本発明の実施形態におけるマルチコア（デュアルコア）での処理の流れ、データの受け渡し、及び、データの多重化を示すブロック図である。
【図９】本発明の実施形態におけるマルチコア（デュアルコア）での処理の流れ、データの受け渡し、及び、データの多重化を示すブロック図である。
【発明を実施するための形態】
【０００９】
以下に本発明の実施の形態を説明する。
図１は、本実施形態における自動車用電子制御装置のハードウェアシステムを示すブロック図である。
図１において、自動車１００は、動力源としてのエンジン（内燃機関）２００、エンジン２００を制御する電子制御装置３００を備える。
【００１０】
エンジン２００は、エンジン２００の吸入空気量（トルク）を調整する電制スロットル２１０を備える。電制スロットル２１０は、スロットルバルブ２１１と、スロットルバルブ２１１の開度を変化させるスロットルモータ２１２とで構成され、スロットルモータ２１２は駆動回路２１３によって駆動される。
【００１１】
電子制御装置３００は、駆動回路２１３を介してスロットルモータ２１２の開度を制御することで、エンジン２００の出力トルクを制御する。
電子制御装置３００は、メインＭＰＵ（Micro-Processing Unit）３０１、メインＭＰＵ３０１の動作監視を行う監視ＩＣとしてのサブＭＰＵ３０２、ＲＡＭ（Random Access Memory）３０３、ＲＯＭ（Read Only Memory）３０４などを含むマイクロコンピュータ３１０を備える。
【００１２】
ＲＯＭ３０４（不揮発性メモリ）は、電制スロットル２１０の制御プログラム、各種の診断プログラム、更に、これらのプログラムを実施するのに用いる制御データを記憶するためのメモリとして使用され、ＲＡＭ３０３（揮発性メモリ）は前述のプログラムを動作させるためのワークメモリとして使用される。
そして、電子制御装置３００（マイクロコンピュータ３１０）は、運転者が操作するアクセルペダル（図示省略）の開度ＡＣＣを検出するアクセル開度センサ４０１、電制スロットル２１０のスロットル開度ＴＶＯを検出するスロットル開度センサ４０２などの各種センサの出力信号を入力し、これらのセンサ信号に基づいて設定した操作信号を駆動回路２１３に出力して電制スロットル２１０の開度を制御する。
【００１３】
図２は、電子制御装置３００の制御機能及び診断機能を示すソフトウェアブロック図である。
アクセル開度センサ４０１からのアクセル開度情報及びスロットル開度センサ４０２からのスロットル開度情報は、それぞれ冗長系演算部１００１，１００２で処理され、制御に用いるアクセル開度データ、スロットル開度データが設定される。
【００１４】
例えばセンサ４０１，４０２をそれぞれ２重に備え、冗長系演算部１００１，１００２では、２重に設けられたセンサの出力についての整合性を判定した上で制御に用いるアクセル開度データ、スロットル開度データを決定する。
冗長系演算部１００１はアクセル開度データを目標トルク演算部１００３に出力し、目標トルク演算部１００３はアクセル開度データに基づきエンジン２００の出力トルクの目標値（目標トルク）を演算する。
【００１５】
更に、目標トルク演算部１００３は目標トルクをスロットル目標開度演算部１００４に出力し、スロットル目標開度演算部１００４は目標トルクに基づきスロットル目標開度を演算し、スロットル制御用モータ指令として電制スロットル２１０の駆動回路２１３に出力する。
一方、冗長系演算部１００２はスロットル開度データを目標値・実際値診断部１００５に出力し、目標値・実際値診断部１００５は、スロットル目標開度演算部１００４の出力であるスロットル目標開度と冗長系演算部１００２の出力であるスロットル実開度とを比較する。
【００１６】
そして、目標値・実際値診断部１００５は、スロットル目標開度とスロットル実開度との偏差に基づいてスロットル実際開度がスロットル目標開度に追従しない異常の有無、換言すれば、スロットル制御機能の異常の有無を検出する。
例えば、目標値・実際値診断部１００５は、スロットル目標開度とスロットル実開度との偏差が閾値よりも大きい状態の継続時間が設定時間に達したときに、スロットル制御機能の異常発生を検出する。
【００１７】
スロットル実際開度がスロットル目標開度に追従しない異常は、駆動回路２１３、スロットルモータ２１２の故障などによって発生する。
ここで、目標値・実際値診断部１００５は、スロットル実開度の異常発生を検出すると、スロットル目標開度演算部１００４からのスロットル目標開度（モータ指令）の駆動回路２１３への出力をカットするカット部１０１０にカット指令を出力する。
【００１８】
係るカット指令により、スロットルモータ２１２の駆動が停止し、電制スロットル２１０の開度がデフォルト開度（全閉位置又は所定低開度）に固定されるフェイルセーフ処理が実施される。
従って、駆動回路２１３やスロットルモータ２１２の故障などによって、スロットル実際開度がスロットル目標開度を上回る高開度に、換言すれば、実出力トルクが目標トルクを上回る高出力トルク状態に制御されることを抑制でき、以って、エンジン２００の出力トルクを抑えて車両を安全側に導くことができる。
【００１９】
一方、例題演算部１００６は、目標値・実際値診断部１００５の診断機能（異常検出機能）が正常であるか否かを診断するための演算処理を実施する。
例題演算部１００６は、目標値・実際値診断部１００５（実動作部又はコピー）に例題を出題する例題出力部１００６ａと、目標値・実際値診断部１００５における例題の回答を受け取る回答受信部１００６ｂと、目標値・実際値診断部１００５からの回答と期待値とを比較する回答判定部１００６ｃと、目標値・実際値診断部１００５に出力する例題と当該例題の回答の期待値とを対として記憶する出題・回答テーブル１００６ｄとを含む。
【００２０】
ここで、目標値・実際値診断部１００５が期待値に一致する回答を出力しない場合には、目標値・実際値診断部１００５が正常に機能していない可能性がある。
そこで、回答判定部１００６ｃは、目標値・実際値診断部１００５が期待値に一致する回答を出力しない場合にカット部１０１０にカット指令を出力することで、スロットル目標開度演算部１００４からのスロットル目標開度（モータ指令）の駆動回路２１３への出力をカットし、電制スロットル２１０の開度をデフォルト開度にするフェイルセーフ処理を実施する。
【００２１】
カット部１０１０は、目標値・実際値診断部１００５と回答判定部１００６ｃとの少なくとも一方が出力カットを指令することで、スロットル目標開度演算部１００４からのスロットル目標開度（モータ指令）の駆動回路２１３への出力をカットする。
つまり、目標値・実際値診断部１００５が正常に機能していない場合、スロットル実際開度の異常が発生しているのに目標値・実際値診断部１００５によるフェイルセーフ処理が実施されていない可能性があるので、回答判定部１００６ｃが駆動回路２１３への出力をカットするフェイルセーフ処理を実施する。
【００２２】
これにより、目標値・実際値診断部１００５として機能するプログラムデータに異常が発生したときに、実出力トルクが目標よりも高い状態に制御されることを抑止でき、車両を安全側に導くことができる。
また、メインＭＰＵ３０１のＡＬＵ（Arithmetic Logic Unit：算術論理装置）の演算機能を診断するＡＬＵ診断部１００７を設けてある。
【００２３】
ＡＬＵ診断部１００７は、サブＭＰＵ３０２（監視ＩＣ）側からの出題を受け取る例題受信部１００７ａと、例題受信部１００７ａが受け取った例題をメインＭＰＵ３０１のＡＬＵで演算させるＡＬＵ診断部１００７ｂと、ＡＬＵ診断部１００７ｂでの演算結果（回答）を受け取る回答受信部１００７ｃと、回答受信部１００７ｃが受け取った回答データを、サブＭＰＵ３０２側に出力する回答送信部１００７ｄとを含む。
【００２４】
回答受信部１００７ｃには、ＡＬＵ診断部１００７ｂでの演算結果（回答）と共に、回答判定部１００６ｃにおける正常、異常の判定結果が入力される。
そして、回答受信部１００７ｃは、回答判定部１００６ｃで異常判定されている場合にはＡＬＵ診断部１００７ｂでの演算結果（回答）とは無関係に誤答を回答送信部１００７ｄに出力し、回答判定部１００６ｃで正常判定されている場合にはＡＬＵ診断部１００７ｂでの演算結果（回答）をそのまま回答送信部１００７ｄに出力する。
以上説明したソフトウェアブロックは、メインＭＰＵ３０１で処理されるプログラムである。
【００２５】
一方、サブＭＰＵ３０２は、ＡＬＵ診断部１００７に向けて出題し、ＡＬＵ診断部１００７からの回答を受け取る例題演算部１００８としての演算機能を備えている。
例題演算部１００８は、ＡＬＵ診断部１００７の例題受信部１００７ａに向けて例題を出題する例題出題部１００８ａと、ＡＬＵ診断部１００７の例題受信部１００７ａに出力する例題と当該例題の回答の期待値とを対として記憶する出題・回答テーブル１００８ｂと、ＡＬＵ診断部１００７の回答送信部１００７ｄからの回答を受け取る回答受信部１００８ｃと、回答受信部１００８ｃが受け取った回答と出題・回答テーブル１００８ｂが出力する期待値とを比較する回答判定部１００８ｄとを含む。
【００２６】
そして、回答判定部１００８ｄは、回答受信部１００８ｃが受け取った回答が期待値と異なる場合、電制スロットル２１０のスロットルモータ２１２の駆動回路２１３への電力供給経路（電源と駆動回路２１３との接続回路）を遮断するモータリレー２１４をオフし、スロットルモータ２１２への電力供給を遮断する。
つまり、サブＭＰＵ３０２の回答判定部１００８ｄは、メインＭＰＵ３０１のＡＬＵにおける演算機能に異常が発生した場合に回答と期待値とが異なると判定することになり、また、目標値・実際値診断部１００５の診断機能（診断プログラム）に異常が発生した場合にも回答と期待値とが異なると判定することになり、いずれの場合もサブＭＰＵ３０２はモータリレー２１４をオフするフェイルセーフ処理を実施する。
【００２７】
これにより、メインＭＰＵ３０１側の目標値・実際値診断部１００５として機能するプログラムデータに異常が発生し、更に、メインＭＰＵ３０１側の回答判定部１００６ｃとして機能するプログラムデータに異常が発生し、電制スロットル２１０の制御異常が発生したときにモータ出力をカットするフェイルセーフ処理を実施することができない状態になったとしても、サブＭＰＵ３０２側の回答判定部１００８ｄが正常に機能すれば、エンジン２００の実出力トルクが目標よりも高い状態に制御されることを抑止でき、車両を安全側に導くことができる。
【００２８】
後で詳細に説明するように、図２に示した各ソフトウェア機能を実行するプログラムが置かれるＲＯＭ３０４は、電制スロットル２１０などの外部デバイスの制御処理を行うプログラム（制御用プログラム）を共に置く通常制御領域（通常演算領域、制御用領域）と、診断用プログラムなどの機能安全に関わる重要なプログラムを主に置くハイセーフティ領域（重要演算領域、診断用領域）との２領域に切り分けられている。
【００２９】
そして、前述した、冗長系演算部１００１，１００２、目標トルク演算部１００３、スロットル目標開度演算部１００４、目標値・実際値診断部１００５、カット部１０１０として機能するプログラムは、ＲＯＭ３０４の通常制御領域に置かれ、例題演算部１００６，１００８、ＡＬＵ診断部１００７、及び、後述するマイコン系診断部１１００として機能するプログラムは、ＲＯＭ３０４のハイセーフティ領域に置かれる。
【００３０】
つまり、診断用プログラムが正常に実行されないと制御システムの安全性を保障できないので、診断用プログラムは一般的に制御プログラムに比べて重要度が高く、ハイセーフティ領域には重要度が制御用プログラムよりも高い処理である診断用プログラムが置かれ（換言すれば、重要度が高い処理が実装され）、ハイセーフティ領域は、後述するようにメモリ欠陥診断処理の多重実施などによってデータ保障レベルを通常制御領域よりも高めるようにしてある。
【００３１】
また、ＲＡＭ３０３も、通常制御領域（通常演算領域）とハイセーフティ領域（重要演算領域）とに切り分けられており、ＲＯＭ３０４の通常制御領域に置かれるプログラムはＲＡＭ３０３の通常制御領域をワークメモリとして用い、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムはＲＡＭ３０３のハイセーフティ領域をワークメモリとして用いる設定としてある。
上記のように、診断用プログラムは、メモリ（ＲＯＭ３０４及びＲＡＭ３０３）のハイセーフティ領域に実装され、制御用プログラムは、メモリ（ＲＯＭ３０４及びＲＡＭ３０３）の通常制御領域に実装される。
【００３２】
なお、図２の例では、目標値・実際値診断部１００５として機能するプログラムはＲＯＭ３０４の通常制御領域に置かれて、ＲＡＭ３０３の通常制御領域をワークメモリとして用いるが、目標値・実際値診断部１００５として機能するプログラムをＲＯＭ３０４のハイセーフティ領域に置き、目標値・実際値診断部１００５がＲＡＭ３０３のハイセーフティ領域をワークメモリとして用いる設定とすることができる。
【００３３】
つまり、診断部を診断する処理は診断対象部よりも重要度が上がり、保障レベルをより高くする必要があり、診断処理が重層化するほど保障レベルの要求はより高くなる。一方、ハイセーフティ領域は、後で詳述するように保障レベルを通常制御領域よりも高めた領域であり、重層化した診断処理のうちで保障レベルの要求（重要度）が高い側の診断処理をハイセーフティ領域に実装することになる。
【００３４】
但し、ハイセーフティ領域に実装する処理の保障レベル（重要度）の最低ラインは、設計思想、演算負荷、メモリ使用量などから適宜変更され得るものであり、診断処理のうち保障レベルの要求（重要度）が低い処理（例えば、目標値・実際値診断部１００５）を通常制御領域に実装することができ、また、目標値・実際値診断部１００５を含む全ての診断処理をハイセーフティ領域に実装することができる。
【００３５】
ここで、マイコン系診断部１１００は、ＲＯＭ３０４の全領域について診断を行う通常ＲＯＭ診断部１１０１、ＲＡＭ３０３の全領域について診断を行う通常ＲＡＭ診断部１１０２、ＲＯＭ３０４のハイセーフティ領域（ＲＯＭ３０４の一部領域）について診断を行うハイセーフティ領域ＲＯＭ診断部１１０３、ＲＡＭ３０３のハイセーフティ領域（ＲＡＭ３０３の一部領域）について診断を行うハイセーフティ領域ＲＡＭ診断部１１０４を含む。
【００３６】
そして、マイコン系診断部１１００に含まれる各診断部として機能するプログラムは、ＲＯＭ３０４のハイセーフティ領域に置かれ、ＲＡＭ３０３のハイセーフティ領域上にワークエリアが割り付けられる。
つまり、ＲＯＭ３０４、ＲＡＭ３０３の全領域は通常ＲＯＭ診断部１１０１、通常ＲＡＭ診断部１１０２で診断が行われ、ＲＯＭ３０４、ＲＡＭ３０３のハイセーフティ領域については、当該ハイセーフティ領域に割り付けられたハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４による診断が更に実施され、ＲＯＭ３０４、ＲＡＭ３０３のハイセーフティ領域についてはメモリ診断が２重に実施されるようになっている。
【００３７】
また、通常ＲＯＭ診断部１１０１、通常ＲＡＭ診断部１１０２は、ハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４で診断され、ハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４は、通常ＲＯＭ診断部１１０１、通常ＲＡＭ診断部１１０２で診断される相互監視が実施されるようになっている。
【００３８】
図３（Ａ）は、ＲＯＭ３０４における通常制御領域とハイセーフティ領域との切り分け及び各領域へのプログラム配置を例示する。
ＲＯＭ３０４のハイセーフティ領域には、ハイセーフティ領域ＲＡＭ診断部１１０４、ハイセーフティ領域ＲＯＭ診断部１１０３、通常ＲＡＭ診断部１１０２、通常ＲＯＭ診断部１１０１、ＡＬＵ診断部１００７、例題演算部１００６として機能するプログラムが置かれる。
【００３９】
また、ＲＯＭ３０４の通常制御領域には、目標トルク演算部１００３、スロットル目標開度演算部１００４、冗長系演算部１００１，１００２などとして機能するプログラムが置かれる。
一方、図３（Ｂ）は、ＲＡＭ３０３における通常制御領域とハイセーフティ領域との切り分け及び各領域をワークメモリとして用いるプログラムを例示する。
【００４０】
ＲＡＭ３０３のハイセーフティ領域には、ハイセーフティ領域ＲＡＭ診断部１１０４、ハイセーフティ領域ＲＯＭ診断部１１０３、通常ＲＡＭ診断部１１０２、通常ＲＯＭ診断部１１０１、ＡＬＵ診断部１００７、例題演算部１００６の各制御プログラムがワークメモリとして使用する領域が設定されている。
また、ＲＡＭ３０３の通常制御領域には、目標トルク演算部１００３、スロットル目標開度演算部１００４、冗長系演算部１００１，１００２などの各制御プログラムがワークメモリとして使用する領域が設定されている。
【００４１】
そして、ハイセーフティ領域ＲＯＭ診断部１１０３は、ＲＯＭ３０４のハイセーフティ領域について診断を行うことで、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムの診断を行い、ハイセーフティ領域ＲＡＭ診断部１１０４は、ＲＡＭ３０３のハイセーフティ領域について診断を行うことで、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムが用いるデータを診断する。
【００４２】
また、通常ＲＯＭ診断部１１０１は、ＲＯＭ３０４のハイセーフティ領域及び通常制御領域を含む全領域について診断を行い、通常ＲＡＭ診断部１１０２は、ＲＡＭ３０３のハイセーフティ領域及び通常制御領域を含む全領域について診断を行う。
尚、図３では、ＲＡＭ３０３及びＲＯＭ３０４におけるハイセーフティ領域，通常制御領域はそれぞれ連続した領域となっているが、２領域に分離されるハイセーフティ領域に挟まれるようにして通常制御領域を設定したり、逆に、２領域に分離される通常制御領域に挟まれるようにしてハイセーフティ領域を設定したりすることができ、ハイセーフティ領域及び通常制御領域は連続した１つ領域に限定されるものではない。
【００４３】
ＲＯＭ３０４の通常制御領域に実装されＲＡＭ３０３の通常制御領域をワークメモリとして用いエンジン制御（電制スロットル２１０の駆動制御）を行う通常制御プログラムはメモリアクセスを頻繁に行うため、ＲＯＭ３０４及びＲＡＭ３０３の通常制御領域の診断を頻繁に行うと演算負荷の増大によってエンジン制御に影響を与える可能性がある。
【００４４】
そこで、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２は、ＲＯＭ３０３及びＲＡＭ３０４の診断を、エンジン制御に影響を与えないように通常制御プログラムの空き時間を利用して行う。このため、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２は、ＲＯＭ３０３及びＲＡＭ３０４の診断に長い時間を要し、診断の実行周期は長くなる。
【００４５】
一方、ＲＯＭ３０４及びＲＡＭ３０３のハイセーフティ領域は、通常制御プログラム（エンジン制御プログラム）によるアクセスがなく、しかもＲＯＭ３０３及びＲＡＭ３０４の一部領域であって診断領域が全領域よりも狭い。
このため、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４は、エンジン制御に影響を与えることなく、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２に比べて診断に要する時間が短くかつより短い周期でハイセーフティ領域の診断を行える。
【００４６】
つまり、ハイセーフティ領域については、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２による診断が行われ、更に、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４によってより短周期で診断が行われるようになっている。
係る構成によって、ハイセーフティ領域のデータ保障レベル（データ保護レベル）は通常制御領域よりも高くなる。従って、ハイセーフティ領域に重要なプログラムである診断処理を割り付けることで、診断処理の信頼性が増し、車両の安全性を向上させることができる。
【００４７】
更に、ＲＯＭ３０３及びＲＡＭ３０４のハイセーフティ領域には、ハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２が割り付けられる。
これにより、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２の信頼性をハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４による診断で保障する一方、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４の信頼性を通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２による診断で保障する、診断部の相互監視を実現できる。
【００４８】
そして、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２は、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４によって短い周期で診断されるので、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２による全領域診断の妥当性が保障され、ＲＯＭ３０４及びＲＡＭ３３の全領域のデータを高いレベルで保障できる。
なお、通常ＲＯＭ診断部１１０１及びハイセーフティ領域ＲＯＭ診断部１１０３は、例えば、ＲＯＭ３０４の診断領域内のデータについてサムやパリティなどの誤り検出符号を演算し、演算した誤り検出符号と予めＲＯＭ３０４内に埋め込まれた値との比較検査を実施することで、データの誤り（メモリ不良）の有無を検出する。
【００４９】
また、通常ＲＡＭ診断部１１０２及びハイセーフティ領域ＲＡＭ診断部１１０４は、例えば、ＲＡＭ３０３の診断領域についてリードライトテストなどを実施して、ＲＡＭ３０３の故障（メモリ欠陥）の有無を検出する。
ところで、ＲＯＭ３０４及びＲＡＭ３０３における各処理の割り付けは、図３に示した例に限定されるものではなく、例えば、図４に示した例のような割り付けが行われる場合がある。
【００５０】
図４は、ＲＯＭ３０４及びＲＡＭ３０３のハイセーフティ領域に割り当てられるリソース（演算に割り当てる時間やメモリ領域）を考慮して、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２をＲＯＭ３０４及びＲＡＭ３０３の通常制御領域に割り付けた例を示す。
つまり、図３に示した例では、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２が置かれるＲＯＭ３０４上の領域、及び、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２がワークメモリとして使用するＲＡＭ３０３上の領域を、共にハイセーフティ領域とした。
【００５１】
一方、図４に示した例では、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２が置かれるＲＯＭ３０４上の領域及びワークメモリとして使用するＲＡＭ３０３上の領域を、共に通常制御領域とした点が異なる。
上記のように、ハイセーフティ領域に割り当てる処理を減らすことでハイセーフティ領域に置かれるプログラムに割り当てられるリソースを低減できる一方、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２は通常制御プログラムの空き時間を利用して全領域の診断を行うため、通常制御領域に割り当てられるリソースでの処理が可能である。
【００５２】
ここで、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２によるＲＯＭ３０４及びＲＡＭ３０３の診断は、図３及び図４のいずれの場合もＲＯＭ３０４及びＲＡＭ３０３の全領域について行われる。
一方、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４によるＲＯＭ３０４及びＲＡＭ３０３の診断は、図３の例ではハイセーフティ領域について行われるが、図４の例では、ハイセーフティ領域、及び、通常制御領域のうちの通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２が置かれる領域及び通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２がワークエリアとして使用する領域について行われる。
【００５３】
換言すれば、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４によって診断する対象領域は、図３及び図４に共通して、診断用の制御プログラムがＲＯＭ３０４上で置かれる領域及び診断用の制御プログラムがＲＡＭ３０３上でワークエリアとして使用する領域である。
従って、図４に示すような割り付けを行った場合も、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２の信頼性をハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４による診断で保障する一方、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４の信頼性を通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２による診断で保障する、診断部の相互監視を実現できる。
【００５４】
そして、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２は、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４によって短い周期で診断されるので、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２による全領域診断の妥当性が保障され、ＲＯＭ３０４及びＲＡＭ３３の全領域のデータを高いレベルで保障できる。
また、図４に示した割り付けでは、演算負荷の大きな通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２をＲＯＭ３０４及びＲＡＭ３０３の通常制御領域に割り付けたので、ハイセーフティ領域に割り当てられるリソースが制限される場合でも、ハイセーフティ領域に割り付けたハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４などの診断処理を短周期で実施できる。
【００５５】
図５は、メインＭＰＵ３０１がマルチコア（デュアルコア）である場合のメモリと各プロセッサコアとの構成例を示す。
メインＭＰＵ３０１は、１つのプロセッサ・パッケージ内に、第１プロセッサコア３０１ａと第２プロセッサコア３０１ｂとの２つのプロセッサコアを封入して構成される。
【００５６】
２つのプロセッサコア３０１ａ、３０１ｂが共用する１つのＲＯＭ３０４が設けられ、ＲＯＭ３０４はハイセーフティ領域と通常制御領域とに切り分けられる。
そして、第１プロセッサコア３０１ａはＲＯＭ３０４の通常制御領域に置かれたプログラムを実行し、第２プロセッサコア３０１ｂはＲＯＭ３０４のハイセーフティ領域に置かれたプログラムを実行する。
【００５７】
一方、ＲＡＭ３０３として、全領域を通常制御領域として第１プロセッサコア３０１ａがワークエリアとして使用する第１ＲＡＭ３０３ａ（第１ローカルＲＡＭ）と、全領域をハイセーフティ領域として第２プロセッサコア３０１ｂがワークエリアとして使用する第２ＲＡＭ３０３ｂ（第２ローカルＲＡＭ）と、通常制御領域とハイセーフティ領域とに切り分けられ第１プロセッサコア３０１ａと第２プロセッサコア３０１ｂとが共用する第３ＲＡＭ３０３ｃ（グローバルＲＡＭ）とを備えている。
なお、図５における斜線領域はハイセーフティ領域を示し、ＲＡＭ３０３、ＲＯＭ３０４の斜線領域以外の領域は通常制御領域を示す。
【００５８】
図６は、図５に示したメモリ構成において、ＲＯＭ３０４、第１〜第３ＲＡＭ３０３ａ〜３０３ｃにおける通常制御領域及びハイセーフティ領域の設定、プログラムが置かれる領域、プログラムがワークエリアとして使用する領域を示す。
図６において、共用のＲＯＭ３０４の通常使用領域には、冗長系演算部１００１，１００２、目標トルク演算部１００３、スロットル目標開度演算部１００４などが置かれると共に、第１プロセッサコア３０１ａ用としての通常ＲＡＭ診断部１１０２ａが置かれる。
【００５９】
一方、共用のＲＯＭ３０４のハイセーフティ領域には、例題演算部１００６、ＡＬＵ診断部１００７の他、第２プロセッサコア３０１ｂ用としての通常ＲＡＭ診断部１１０２ｂ、通常ＲＯＭ診断部１１０１、ハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４が置かれる。
また、共用の第３ＲＡＭ３０３ｃの通常制御領域はＲＯＭ３０４の通常制御領域に置かれるプログラムのワークエリアであり、冗長系演算部１００１，１００２、目標トルク演算部１００３、スロットル目標開度演算部１００４、通常ＲＡＭ診断部１１０２ａのワークエリアとして使用される。
【００６０】
一方、共用の第３ＲＡＭ３０３ｃのハイセーフティ領域は、通常ＲＡＭ診断部１１０２ｂ、通常ＲＯＭ診断部１１０１、ハイセーフティ領域ＲＯＭ診断部１１０３、ハイセーフティ領域ＲＡＭ診断部１１０４のワークエリアとして割り付けられる。
また、第２プロセッサコア３０１ｂがワークエリアとして使用する第２ＲＡＭ３０３ｂは、例題演算部１００６、ＡＬＵ診断部１００７のワークエリアとして割り付けられる。
【００６１】
そして、第２プロセッサコア３０１ｂは、共用のＲＯＭ３０４のハイセーフティ領域に置かれるハイセーフティ領域ＲＯＭ診断部１１０３に従い、共用のＲＯＭ３０４のハイセーフティ領域及び共用のＲＯＭ３０４の通常制御領域のうちの通常ＲＡＭ診断部１１０２ａが置かれる領域についてデータ診断（データの誤りの有無）を行う。
また、第２プロセッサコア３０１ｂは、共用のＲＯＭ３０４のハイセーフティ領域に置かれる通常ＲＯＭ診断部１１０１に従い、共用のＲＯＭ３０４のハイセーフティ領域及び通常制御領域の全領域についてデータ診断（データの誤りの有無、メモリ欠陥の診断）を行う。
【００６２】
一方、第２プロセッサコア３０１ｂは、共用のＲＯＭ３０４のハイセーフティ領域に置かれるハイセーフティ領域ＲＡＭ診断部１１０４に従い、共用の第３ＲＡＭ３０３ｃのハイセーフティ領域、共用の第３ＲＡＭ３０３ｃの通常制御領域のうちの通常ＲＡＭ診断部１１０２ａがワークエリアとして使用する領域、及び、第２ＲＡＭ３０３ｂの全領域について診断（データ誤りの診断、メモリ欠陥の診断）を行う。
また、第２プロセッサコア３０１ｂは、共用のＲＯＭ３０４のハイセーフティ領域に置かれる通常ＲＡＭ診断部１１０２ｂに従い、共用の第３ＲＡＭ３０３ｃの全領域及び第２ＲＡＭ３０３ｂの全領域について診断（データ誤りの診断、メモリ欠陥の診断）を行う。
【００６３】
第１プロセッサコア３０１ａは、第２プロセッサコア３０１ｂによる通常ＲＡＭ診断部１１０２ｂに従った診断と同時又は診断完了後に、共用のＲＯＭ３０４の通常制御領域に置かれる通常ＲＡＭ診断部１１０２ａに従い、第１ＲＡＭ３０３ａの全領域についてデータ診断（データ誤りの診断、メモリ欠陥の診断）を行う。
上記構成においても、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２ａ、１１０２ｂの信頼性をハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４による診断で保障する一方、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４の信頼性を通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２ｂによる診断で保障する、診断部の相互監視を実現できる。
【００６４】
そして、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２ａ、１１０２ｂは、ハイセーフティ領域ＲＯＭ診断部１１０３及びハイセーフティ領域ＲＡＭ診断部１１０４によって短い周期で診断されるので、通常ＲＯＭ診断部１１０１及び通常ＲＡＭ診断部１１０２ａ、１１０２ｂによる全領域診断の妥当性が保障され、ＲＯＭ３０４及びＲＡＭ３３ａ〜３０３ｃの全領域のデータを高いレベルで保障できる。
【００６５】
図７は、メインＭＰＵ３０１をシングルコアとする場合における、各種プログラムの処理の流れ、及び、ＲＡＭ３０３の構成を示す。
図７の左側のブロックには、ＲＯＭ３０４の通常制御領域に置かれるプログラムの処理の流れを概略的に示してあり、ＲＯＭ３０４の通常制御領域に置かれるプログラムは、ＲＡＭ３０３の通常制御領域にアクセスして処理を行う。
【００６６】
フローチャート（Ａ）はバックグラウンド処理の一例を示す。
マイクロコンピュータ３１０は、ステップＳ２１０１にてリセットされることで、ステップＳ２１０２でＭＰＵ３０１，３０２の初期化処理を実施した後、ステップＳ２１０３のバックグラウンド処理を実施する。
【００６７】
そして、マイクロコンピュータ３１０は、ステップＳ２１０４にて終了フラグの判断を行い、終了フラグがセットされるまではバックグラウンド処理を継続する。
一方、マイクロコンピュータ３１０は、終了フラグがセットされると、ステップＳ２１０５にて各種の終了処理を実施してリセット（再起動）に待機する。
【００６８】
また、フローチャート（Ｂ）は、タイマモジュールＸに基づく割り込み処理の一例を示す。
マイクロコンピュータ３１０は、ステップＳ２２０１でタイマモジュールＸに基づき１ｍｓ毎の割り込みがかかることで、ステップＳ２２０２にて１ｍｓタスク処理を実施し、ステップＳ２２０３にて５ｍｓタスク処理を実施し、ステップＳ２２０４にて１０ｍｓタスク処理を実施し、ステップＳ２２０５にて１００ｍｓタスク処理を実施する。
【００６９】
また、フローチャート（Ｃ）は、割り込み要因（例えば、入力パルス信号の立ち上がり立ち下りなど）に基づく処理の一例を示す。
マイクロコンピュータ３１０は、ステップＳ２３０１にて各種の割り込み要因に基づき割り込みがかかることで、ステップＳ２３０２にて各種の割り込み処理を実施する。
【００７０】
図７の右側のブロックには、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムの処理の流れを概略的に示してあり、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムは、ＲＡＭ３０３のハイセーフティ領域にアクセスして処理を行う。
マイクロコンピュータ３１０は、フローチャート（Ｄ）のステップＳ２４０１にて、通常制御領域プログラムで使用されないタイマモジュールＹ（タイマモジュールＸとは個別のタイマモジュールＹ）に基づき割り込みがかかることで、ステップＳ２４０２にてハイセーフティ領域プログラムの定時タスク処理を実施する。
【００７１】
また、図７の中央のブロックは、ＲＡＭ３０３における領域の切り分け、ＲＡＭデータの多重化、ＲＡＭ３０３の通常制御領域とハイセーフティ領域との間におけるデータの受け渡し機能を示す。
ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムがアクセスするＲＡＭ３０３のハイセーフティ領域には、ＲＡＭ３０３の通常制御領域からコピーしたデータ、ＲＡＭ３０３の通常制御領域にコピーするデータ、ＲＡＭ３０３のハイセーフティ領域内で更新されるデータが保存される。
【００７２】
ここで、通常制御領域とハイセーフティ領域との間におけるデータのコピー（データの受け渡し）は、ＲＯＭ３０４のハイセーフティ領域に置かれデータチェック機能を有するマクロのソフトインターフェースによって行われる。
上記のインターフェースは、ＲＡＭ３０３の通常制御領域に保存されているデータをＲＡＭ３０３のハイセーフティ領域にコピーするためのインプットインターフェースと、ＲＡＭ３０３のハイセーフティ領域に保存されているデータをＲＡＭ３０３の通常制御領域にコピーするためのアウトプットインターフェースとを含む。
【００７３】
尚、データによっては、通常制御領域からハイセーフティ領域にコピーしたデータ、ハイセーフティ領域から通常制御領域にコピーするデータ、ハイセーフティ領域内で更新されるデータの全てに該当するものもある。
また、ソフトウェアインターフェースは、ＲＯＭ３０４のハイセーフティ領域に代えて通常制御領域に置くことができ、この場合、ＲＡＭ３０３のハイセーフティ領域に保存されているデータをＲＡＭ３０３の通常制御領域にコピーするインターフェースがインプットインターフェースとなり、ＲＡＭ３０３の通常制御領域に保存されているデータをＲＡＭ３０３のハイセーフティ領域にコピーするためのインターフェースがアウトプットインターフェースとなる。
【００７４】
ＲＡＭ３０３のハイセーフティ領域については、データを多重化して保存する設定としてある。データの多重化として、例えば、オリジナルのデータと、当該オリジナルのデータを反転したデータ（反転値）とを対とする保存が行われる。
オリジナルデータと反転データとを対としてハイセーフティ領域に保存する場合でのソフトウェアインターフェースの処理は以下のようになる。
【００７５】
ＲＯＭ３０４の通常制御領域に置かれるプログラムがＲＡＭ３０３の通常制御領域に保存したデータを、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムが使用する場合、インプットインターフェースは、通常制御領域側のデータをそのままハイセーフティ領域にコピーすると共に、通常制御領域側のデータの反転値をハイセーフティ領域に保存する。
一方、ＲＯＭ３０４のハイセーフティに置かれるプログラムがＲＡＭ３０３のハイセーフティ領域に保存したデータを、ＲＯＭ３０４の通常制御領域に置かれるプログラムが使用する場合、アウトプットインターフェースは、ハイセーフティ領域に対をなして保存されているオリジナルデータと反転データとが正しいか否か（反転関係にあるか否か）を判定する。
【００７６】
そして、アウトプットインターフェースは、データが正しい場合（反転関係にある場合）には通常制御領域にオリジナルデータをコピーし、正しくない場合（反転関係にない場合）には保存データが正しくなかった（データをコピーできなかった）ことを示す情報を通常制御領域に書き込む。
尚、ＲＡＭ３０３のハイセーフティ領域におけるデータの多重化（多面化、多重保存）は、オリジナルデータと反転データとの２重化に限定されるものではなく、同一データを２つ保存する構成とすることができ、また、３重以上に保存させることができる。
【００７７】
ＲＡＭ３０３のハイセーフティ領域に同一データを複数保存する場合であって係るデータを通常制御領域にコピーする場合、アウトプットインターフェースは、ハイセーフティ領域に多重に保存されているデータが正しいか否かを、多重データが全て一致するか否かに基づいて判定する。
そして、多重データが全て一致する場合に、通常制御領域にデータをコピーし、多重データが全て一致しない場合にはデータが正しくなかったことを示す情報を通常制御領域に書き込む。
【００７８】
一方、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムは、ＲＡＭ３０３のハイセーフティ領域に多重に保存されている一群のデータを相互に比較することで、反転関係や同一などの所定の多重化規則に従ってデータ保存されているか否かをチェックする。
そして、ハイセーフティ領域に置かれるプログラムは、所定の多重化規則に従ってデータ保存されている場合にそのデータを用い、多重に保存されているデータが所定の多重化保存の規則を満たさずＲＡＭ３０３の欠陥が発生している場合には、所定のフェイルセーフ処理を実施する。
【００７９】
また、ＲＡＭ３０３のハイセーフティ領域に同一データを３重以上に重複して保存させる場合、複数のデータのうちで同一であるデータの数が多いものを正しいデータとして判定し、正しいと判定されたデータを通常制御領域にコピーしたりハイセーフティ領域のプログラムが採用するデータとしたりすることができる。
例えば、ＲＡＭ３０３のハイセーフティ領域に同一データを３重に保存する場合、３つの全てが同一であれば３重に保存させたデータの全てが正しく保存されているものと判断してそのままそのデータを用い、３つのうちの２つが同一であれば、同一である２つのデータは正しく保存されているものの、残りの１つのデータは誤った値に保存されたものと見做し、同一である２つのデータを用いるようにする。
【００８０】
図８は、マイクロコンピュータ３１０のメインＭＰＵ３０１がシングルコアではなくマルチコアである場合における、各種プログラムの処理の流れ、及び、ＲＡＭ３０３の構成を示す。
図８の左側のブロックには、ＲＯＭ３０４の通常制御領域に置かれるプログラムについての第１プロセッサコア３０１ａによる処理の流れを概略的に示してあるが、係るブロックに記載される処理の流れ（フローチャート（Ａ）、（Ｂ）、（Ｃ））は、図７に記したものと同様であり、詳細な説明は省略する。
【００８１】
尚、図８に示すマルチコアシステムの場合、第１プロセッサコア３０１ａは、第１プロセッサコア３０１ａ専用の第１ＲＡＭ３０３ａ（ローカルＲＡＭ）と、第２プロセッサコア３０１ｂと共用する第３ＲＡＭ３０３ｃ（共用ＲＡＭ）とにアクセスして処理を行い、第２プロセッサコア３０１ｂと共用するデータは第３ＲＡＭ３０３ｃに保存する。
図８の右側のブロックには、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムについての第２プロセッサコア３０１ｂによる処理の流れを概略的に示してある。
【００８２】
ここで、第２プロセッサコア３０１ｂは、ハイセーフティ領域の信頼性を保障するための処理を図７に示したフローチャート（Ｄ）と同様にして実施する。また、マルチコアシステムの場合、第２プロセッサコア３０１ｂ側においてもバックグラウンド処理が可能であり、第２プロセッサコア３０１ｂ側にも、バックグラウンド処理を示すフローチャート（Ｅ）を記載してある。
フローチャート（Ｅ）において、第２プロセッサコア３０１ｂは、ステップＳ２５０１にて開始指令を受け取ると、ステップＳ２５０２で初期化処理を実施した後、ステップＳ２５０３のバックグラウンド処理を実施する。
【００８３】
そして、第２プロセッサコア３０１ｂは、ステップＳ２５０４にて終了フラグの判断を行い、終了フラグがセットされるまではバックグラウンド処理を継続する。
一方、第２プロセッサコア３０１ｂは、終了フラグがセットされると、ステップＳ２５０５にて第１プロセッサコア３０１ａに向けて第２プロセッサコア３０１ｂでの処理終了を通知する。
【００８４】
また、第２プロセッサコア３０１ａは、第２プロセッサコア３０１ａ専用の第２ＲＡＭ３０３ｂ（ローカルＲＡＭ）と、第１プロセッサコア３０１ａと共用する第３ＲＡＭ３０３ｃ（共用ＲＡＭ）とにアクセスして処理を行い、第１プロセッサコア３０１ａと共用するデータは第３ＲＡＭ３０３ｃに保存し、ハイセーフティ領域のプログラムでしか使用しない更新データは第２ＲＡＭ３０３ｂに保存する。
【００８５】
図８の中央のブロックは、マルチコアシステムにおける、第３ＲＡＭ３０３ｃの領域切り分け、ＲＡＭデータの多重化、通常制御領域とハイセーフティ領域との間におけるデータの受け渡し機能を示す。
ハイセーフティ領域のプログラムでしか使用しない更新データは第２ＲＡＭ３０３ｂに保存され、ＲＯＭ３０４のハイセーフティ領域に置かれるプログラムがアクセスする第３ＲＡＭ３０３ｃのハイセーフティ領域には、第３ＲＡＭ３０３ｃの通常制御領域からコピーしたデータ、第３ＲＡＭ３０３ｃの通常制御領域にコピーするデータが保存される。
【００８６】
そして、第３ＲＡＭ３０３ｃの通常制御領域のデータをハイセーフティ領域にコピーする場合、インプットインターフェースによって多重化されてコピーされる。
一方、第３ＲＡＭ３０３ｃの通常制御領域にコピーするためのデータは多重化して第３ＲＡＭ３０３ｃのハイセーフティ領域に保存され、アウトプットインターフェースは第３ＲＡＭ３０３ｃのハイセーフティ領域に多重に保存されているデータの整合性を判断した上で第３ＲＡＭ３０３ｃの通常制御領域にコピーする。
【００８７】
図９は、メインＭＰＵ３０１をマルチコアとする場合における、各種プログラムの処理の流れ、及び、データ受け渡し機能の別の例を示す。
図９において、第１プロセッサコア３０１ａ側の処理及び第２プロセッサコア３０１ａ側の処理は、図８に示した構成例と同様であるが、ハイセーフティ領域と通常制御領域との間におけるデータの受け渡し機能が異なる。
【００８８】
図９に示した例では、第２プロセッサコア３０１ａは、第３ＲＡＭ３０３ｃの通常制御領域からコピーしたデータ、第３ＲＡＭ３０３ｃの通常制御領域にコピーするデータ、ハイセーフティ領域側でのみ使用する更新データを、第２プロセッサコア３０１ａ専用の第２ＲＡＭ３０３ｂに保存する。
そして、第３ＲＡＭ３０３ｃの通常制御領域から第２ＲＡＭ３０３ｂへのデータコピーは、ハイセーフティ領域側に置かれるインプットインターフェースによって行われ、インプットインターフェースは、第３ＲＡＭ３０３ｃの通常制御領域のデータを第２ＲＡＭ３０３ｂに多重化して保存する。
【００８９】
また、第２ＲＡＭ３０３ｂに多重化して保存されて第３ＲＡＭ３０３ｃの通常制御領域にコピーするデータは、ハイセーフティ領域側に置かれるアウトプットインターフェースによってデータチェック（多重化データの整合性判断）が行われて、第３ＲＡＭ３０３ｃの通常制御領域にコピーされる。
即ち、図９に示す構成例では、多重化データを共用の第３ＲＡＭ３０３ｃに保存することなく、第２プロセッサコア３０１ａ専用の第２ＲＡＭ３０３ｂと、共用の第３ＲＡＭ３０３ｃとの間でのデータの受け渡しを実行できることになる。
【００９０】
なお、図９に示す構成では、データの受け渡しにおいて２プロセッサコア３０１ａ専用の第２ＲＡＭ３０３ｂにアクセスすることになるため、第２プロセッサコア３０１ａ側がソフトウェアインターフェースとしての処理を実施することが必要となる。このため、ソフトウェアインターフェースは、ＲＯＭ３０４のハイセーフティ領域に置いて第２プロセッサコア３０１ａによって実行させる。
【００９１】
上記実施形態で説明した各技術的思想は、矛盾が生じない限りにおいて適宜組み合わせて使用することができる。
また、好ましい実施形態を参照して本発明の内容を具体的に説明したが、本発明の基本的技術思想及び教示に基づいて、当業者であれば種々の変形態様を採り得ることは自明である。
【００９２】
上記の電子制御装置３００は電制スロットル２１０を制御対象とするが、制御対象は電制スロットル２１０に限定されるものでないことは明らかであり、例えば、燃料噴射装置、自動変速装置、ブレーキ装置などを制御対象することができる。
また、電子制御装置３００は、メインＭＰＵ３０１と共に、メインＭＰＵ３０１の監視を行うサブＭＰＵ３０２を備えるが、サブＭＰＵ３０２を省略した構成とすることができる。
【００９３】
また、電子制御装置３００のメインＭＰＵ３０１、サブＭＰＵ３０２を、メインＣＰＵ、サブＣＰＵと読み替えることができる。
また、サブＭＰＵ３０２によるメインＭＰＵ３０１の監視方式として、前述した例題回答方式の他、メインＭＰＵ３０１が出力する所定周期のパルス信号をサブＭＰＵ３０２で監視するウォッチドックタイマ（ＷＤＴ）方式を採用することができる。
【００９４】
ここで、上記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
（イ）
前記通常演算領域及び重要演算領域を含む全領域は、前記メモリ診断によって診断される領域に実装される通常メモリ診断処理により診断される、請求項１から３のいずれか１つに記載の自動車用電子制御装置。
上記発明によると、重要演算領域のメモリ診断と、全領域の通常メモリ診断の相互監視が実現され、これにより、全領域の通常メモリ診断の妥当性が保障される。
【００９５】
（ロ）
前記メモリ診断による診断は、前記通常メモリ診断処理による診断よりも短周期で実施される、請求項（イ）記載の自動車用電子制御装置。
上記発明によると、重要演算領域は、メモリ診断及び通常メモリ診断処理で２重に診断されると共に、メモリ診断が通常メモリ診断処理よりも短い周期で診断するので、通常演算領域よりも高いレベルのデータ保障を行える。
【００９６】
（ハ）
前記通常演算領域に外部デバイスを制御する制御用プログラムが実装され、前記重要演算領域に診断用プログラムが実装される、請求項１から３、（イ）、（ロ）のいずれか１つに記載の自動車用電子制御装置。
上記発明によると、制御の安全性を左右する診断用プログラムの保障がなされ、自動車の安全性を向上させることができる。
【００９７】
（ニ）
前記重要演算領域のプログラムを実行するときの定時タスク処理を実現するためのタイマモジュールと、前記通常演算領域のプログラムを実行するときの定時タスク処理を実現するためのタイマモジュールとを個別に備える、請求項１から３、（イ）から（ハ）のいずれか１つに記載の自動車用電子制御装置。
上記発明によると、通常演算領域用と重要演算領域用とで個別のタイマモジュールを用いることで、通常演算領域での定時タスク処理と重要演算領域での定時タスク処理との独立性が保障される。
【００９８】
（ホ）
前記重要演算領域のプログラムを実行する第１のプロセッサコアと、前記通常演算領域のプログラムを実行する第２のプロセッサコアとからなるマルチコアで構成される、請求項１から３、（イ）から（ニ）のいずれか１つに記載の自動車用電子制御装置。
上記発明によると、ＣＰＵ（ＭＰＵ）がマルチコアである場合に、重要演算領域のプログラムの実行と通常演算領域のプログラムの実行とでコアを使い分ける構成として、ローカルＲＡＭ診断の並行実施などを可能とする。
【符号の説明】
【００９９】
１００…自動車、２００…エンジン、２１０…電子制御スロットル、３００…電子制御装置、３０１…メインＭＰＵ、３０２…サブＭＰＵ、３０３…ＲＡＭ
【図１】
2015022622.tif 000003
【図２】
2015022622.tif 000004
【図３】
2015022622.tif 000005
【図４】
2015022622.tif 000006
【図５】
2015022622.tif 000007
【図６】
2015022622.tif 000008
【図７】
2015022622.tif 000009
【図８】
2015022622.tif 000010
【図９】
2015022622.tif 000011