(57)【特許請求の範囲】
【請求項１】
第１処理タイミングで演算処理を実行する第１プロセッサコア、及び第２処理タイミングで演算処理を実行する第２プロセッサコアを有し、それぞれのプロセッサコアが独立した制御機能を実行可能なマルチコアプロセッサを備えた電子制御装置において、
故障したプロセッサコア（以下、第２プロセッサコア）の演算処理を正常なプロセッサコア（以下、第１プロセッサコア）で代替して実行する場合、
前記第１プロセッサコアは、前記第１処理タイミングで前記第２プロセッサコアの故障を検出すると共に、故障を検出した故障検出タイミングと前記故障検出タイミングより前の前記第２プロセッサコアの前記第２処理タイミングとの間の経過時間を求め、前記第２プロセッサコアの前記第２処理タイミングの周期の時間から前記経過時間を差し引いた差分時間を求め、前記故障検出タイミングを起点にして前記差分時間を加算した新たなタイミングを前記第２プロセッサコアの初回代替処理タイミングとすると共に、前記初回代替処理タイミングを起点として前記第２処理タイミングの周期の時間を加算した新たなタイミングを前記初回代替処理タイミングに続く継続代替処理タイミングとすることを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記第１プロセッサコアは、前記第２プロセッサコアの前記故障検出タイミングを求める故障検出機能と、前記故障検出タイミングと前記故障検出タイミングより前の前記第２プロセッサコアの前記第２処理タイミングとの間の前記経過時間を求める経過時間演算機能と、前記第２プロセッサコアの前記第２処理タイミングの周期の時間から前記経過時間を差し引いた前記差分時間を求める差分時間演算機能と、前記故障検出タイミングを起点にして前記差分時間を加算した新たなタイミングを前記第２プロセッサコアの前記初回代替処理タイミングとすると共に、前記初回代替処理タイミングを起点として前記第２処理タイミングの周期の時間を加算した新たなタイミングを前記初回代替処理タイミングに続く継続代替処理タイミングとする代替処理タイミング演算機能とを備えていることを特徴とする電子制御装置。
【請求項３】
第１処理タイミングで出力値を演算する出力値演算機能を有する第１プロセッサコアと、第２処理タイミングで出力値を出力ポートにセットするセット処理機能を有する第２プロセッサコアとよりなる電子制御装置において、
前記第１プロセッサコアは、前記第２プロセッサコアの故障検出タイミングを求める故障検出機能と、前記故障検出タイミングと前記故障検出タイミングより前の前記第２プロセッサコアの前記第２処理タイミングとの間の経過時間を求める経過時間演算機能と、前記第２プロセッサコアの前記第２処理タイミングの周期の時間から前記経過時間を差し引いた差分時間を求める差分時間演算機能と、前記故障検出タイミングを起点にして前記差分時間を加算した新たなタイミングを前記第２プロセッサコアの初回代替処理タイミングとすると共に、前記初回代替処理タイミングを起点として前記第２処理タイミングの周期の時間を加算した新たなタイミングを前記初回代替処理タイミングに続く継続代替処理タイミングとする代替処理タイミング演算機能とを備えていることを特徴とする電子制御装置。
【請求項４】
請求項３に記載の電子制御装置において、
前記第２プロセッサコアは、前記第２処理タイミングを実行する時刻毎に前記第１プロセッサコア及び前記第２プロセッサコアとは別に設けたタイマの時間情報を記憶すると共に、この時間情報から前記第２処理タイミングの実行周期の時間を演算して記憶し、
前記第１プロセッサコアの前記経過時間演算機能は、前記第１処理タイミングで前記第２プロセッサコアの故障を検出するとこの時の前記タイマの時間情報を求め、故障検出時の時間情報と前記第２プロセッサコアに記憶された故障検出前の前記第２処理タイミングの時間情報とから前記経過時間を求め、
前記第１プロセッサコアの前記差分時間演算機能は、前記第２プロセッサコアに記憶された前記第２処理タイミングの周期の時間から前記経過時間を差し引き、
前記第１プロセッサコアの前記代替処理タイミング演算機能は、故障が検出された前記第１処理タイミングの時刻の前記タイマの時間情報に前記差分時間を加算した新たなタイミングを前記第２プロセッサコアの前記初回代替処理タイミングとすると共に、前記初回代替処理タイミングを起点として前記第２処理タイミングの周期の時間を加算した新たなタイミングを前記初回代替処理タイミングに続く継続代替処理タイミングとする
ことを特徴とする電子制御装置。
【請求項５】
請求項４に記載の電子制御装置において、
前記タイマはフリーランタイマであり、故障を検出した時の前記フリーランタイマの時間情報に前記差分時間を加算した時間情報を前記フリーランタイマにセットし、前記フリーランタイマにセットされた時間情報に前記フリーランタイマの値が達すると前記第１プロセッサコアに割り込みをかけ、前記第１プロセッサコアはこの割り込みに応じて前記出力値を前記出力ポートにセットすることを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、種々の制御対象を制御する電子制御装置に係り、特に、２つ以上のプロセッサコアを有し、それぞれのプロセッサコアが独立した制御機能を実行可能なマルチコアプロセッサを備えた電子制御装置に関するものである。
【背景技術】
【０００２】
１個のマイクロコンピュータ内に複数のプロセッサコアを搭載して各プロセッサコアが並行、独立して処理を行うことが可能なマルチコアプロセッサが知られている。マルチコアプロセッサは、並行処理が可能であるために、例えば、車載制御装置の分野において、異なる制御機能を有する複数の制御装置を統合して用いることが期待されている。また、マルチコアプロセッサは使い方によって、いずれかのプロセッサコアに故障が生じた場合に、他のプロセッサコアが代替処理を行うことができるという利点がある。
【０００３】
例えば、特開２０１２−２２６４０９号公報（特許文献１）には、複数のプロセッサコアを有する電子制御装置において、プロセッサコアを動作プロセッサコア群と予備プロセッサコア群に分けておき、動作プロセッサコアが故障した場合に予備プロセッサコアで代替演算処理を行うことが提案されている。そして、所定の切り替えタイミングが到来するたびに、予備プロセッサコアの指定を変更することを提案している。これによれば、所定の切り替えタイミングが到来すると、予備プロセッサコアの指定を変更するため、予備プロセッサコアとして待機しているプロセッサコアが正常に動作可能であるという信頼性が高くなる、また、異常が発生したプロセッサコアの代替演算処理を行う際に、該当する演算処理を過去に行っている可能性も高くなり、プロセッサコアのいずれかに異常が発生した際に行われる代替演算処理の信頼性を向上させることができる、と述べている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２２６４０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、車載制御装置の分野ではプロセッサコアが実行すべき演算処理が増大しており、プロセッサコアの処理能力の限界に迫る傾向にある。そこで演算処理を分担して実行し、それぞれのプロセッサコアが余裕を持って演算処理を実行することが期待されている。ここで、演算処理は、出力値（以下、出力値と表記する）の計算処理、出力値のセット処理、その他の必要な処理を総合した処理を意味しており、要はプロセッサコアによって実行される種々の処理を纏めて演算処理と表記している。
【０００６】
例えば、２つのプロセッサコアを用いる場合、１つのプロセッサコアは制御対象の出力値を計算するという演算処理を行い、もう一つのプロセッサコアは計算された出力値を出力ポートにセットするという演算処理を行う機能分担を行っている。そして、出力値を計算するプロセッサコアの演算処理は第１の所定時間周期のタイミング（以下、処理タイミングという）で実行され、出力値を出力ポートにセットするプロセッサコアの演算処理は、出力値を演算するプロセッサコアの第１の所定時間周期とずらされた第２の所定時間周期のタイミング（以下、処理タイミングという）で実行されている。
【０００７】
ところで上述したマルチコアプロセッサでは、出力値を出力ポートにセットするプロセッサコアが故障した場合、故障したプロセッサコアで処理していた出力値のセット処理を、他方のプロセッサコアに切り替えて代替処理するようになっている。この場合、故障したプロセッサコアで行っていた出力値のセット処理の処理タイミングが、他方のプロセッサコアの出力値の演算処理を行う処理タイミングに切り替わることが考えられる。セット処理の処理タイミングが変わった場合、例えば出力信号が途切れ、制御対象の動作が不正になる恐れがある。尚、上述した例では出力値を出力ポートにセットするプロセッサコアが故障した場合を説明したが、出力値を演算するプロセッサコアが故障した場合も、同様に切り替えられたプロセッサコアの処理タイミングに変わることが考えられる。このように、切り替えられたプロセッサコアによる代替演算処理の処理タイミングがずれると、正常な代替演算処理ができなく恐れがある。
【０００８】
本発明の目的は、故障したプロセッサコアを正常なプロセッサコアに切り替えた際に、故障したプロセッサコアによる演算処理の処理タイミングと同じ処理タイミングで、正常なプロセッサコアによって故障したプロセッサコアの演算処理を実行することができる電子制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の特徴は、故障したプロセッサコア（以下、故障プロセッサコア）の演算処理を正常なプロセッサコア（以下、正常プロセッサコア）で代替して実行する場合、正常プロセッサは、故障を検出した故障検出タイミングと、故障検出タイミングより前の故障プロセッサコアの演算処理の処理タイミングとの間の経過時間を求め、故障プロセッサコアの演算処理の実行周期の時間から経過時間を差し引いた差分時間を求め、故障検出タイミングを起点にして差分時間を加算した新たなタイミングを故障プロセッサコアの演算処理の代替処理タイミングとする、ところにある。
【発明の効果】
【００１０】
本発明によれば、故障する前のプロセッサコアによって実行される演算処理の処理タイミングと同じ処理タイミングで、正常プロセッサコアによって故障プロセッサコアの演算処理を実行することができ、正常な代替演算処理を行うことができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施例になる電子制御装置の構成を示す構成図である。
【図２】プロセッサコアの故障時の切り替え状態を説明するためのタイミングチャート図である。
【図３】第１プロセッサコアによって実行される制御フローを示すフローチャート図である。
【図４】第２プロセッサコアによって実行される制御フローを示すフローチャート図である。
【図５】第１プロセッサコアのコンペアマッチ割込み処理を示すフローチャート図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について図面を用いて詳細に説明するが、本発明は以下の実施形態に限定されることなく、本発明の技術的な概念の中で種々の変形例や応用例をもその範囲に含むものである。
【００１３】
図1は本発明の代表的な実施形態における電子制御装置（以下、マイクロコンピュータと表記する）の内部構成を示したものである。本実施例において、１つのプロセッサコアは制御対象の出力値を計算するという演算を行い、もう一つのプロセッサコアは計算された出力値を出力ポートにセットするという演算を行う機能を有している。
【００１４】
マイクロコンピュータ１は演算や周辺モジュールにアクセスして出力処理を行なう第１プロセッサコア２（図面ではＣＰＵ-Ａと表記）及び第２プロセッサコア３（図面ではＣＰＵ-Ｂと表記）、演算に使用する情報や演算結果を一時的に記憶するＲＡＭ４、時間計測するための周辺モジュールとしてのフリーランタイマ８、出力値のセット処理を行うための周辺モジュールとしての出力ポート９を有する。そして、第１プロセッサコア２の機能は制御対象の出力値を計算する演算処理機能を有し、第２プロセッサコア３の機能は演算された出力値を出力ポート９にセットするセット処理機能を有している。これらのプロセッサコア２、３は並列処理されて出力ポート９から最終的に出力信号１０を出力する。この出力信号は制御対象のアクチュエータを制御することになる。
【００１５】
ＲＡＭ４にはいくつかの記憶領域が割り当てされている。ＲＡＭ−Ａ５は第１プロセッサコア２で演算された出力値を一時的に記憶する領域であり、ＲＡＭ−Ｂ６は第２プロセッサコア２の処理タイミングを記憶する領域であり、ＲＡＭ−Ｃ７は第２プロセッサコア２の演算周期を記憶する領域である。これらのＲＡＭ領域の情報は第１プロセッサコア２及び第２プロセッサコア３からアクセスされ、それぞれのプロセッサコア２，３で必要な演算に使用されるものである。
【００１６】
そして、第１プロセッサコア２は出力値の計算を行い、その計算結果である出力値を所定の処理タイミングでＲＡＭ−Ａ５に記憶する。また、第２プロセッサコア３はＲＡＭ-Ａ５に記憶された出力値を所定の処理タイミングで読み出して周辺モジュールの出力ポート９にセットする。これによって、第１プロセッサコア２で算出した出力値を出力信号１０として出力し、図示しないアクチュエータを駆動することができる。ここで、出力信号１０を出力する出力ポート９、時間を計測する機能を有するフリーランタイマ８は第１プロセッサコア２、及び第２プロセッサコア３の両方からアクセスすることが可能な構成となっている。
【００１７】
そして、本実施例ではどちらかのプロセッサコア２、３が故障を検出した場合、正常なプロセッサコアコアで代替演算処理を実施することができる構成とされている。本実施例では第１プロセッサコア２が第２プロセッサコア３の異常診断処理を実行しており、出力値を出力ポート９にセットするセット処理を行う第２プロセッサコア３が故障した時、第１プロセッサコア２でこのセット処理を代替して行うものである。図２に示すタイムチャートは、第２プロセッサコア３が故障を生じた時に、第１プロセッサコア２にセット処理を切り替える時の考え方を説明するためのタイムチャートを示している。
【００１８】
第１プロセッサコア２と第２プロセッサコア３は並列に所定の処理タイミングで演算処理を行うものである。本実施例では第１プロセッサコア２は自身の第１処理タイミング１０１（本実施例では１０ｍＳ）で時刻Ａ毎に出力値の演算処理を行ない、その演算された出力値をＲＡＭ-Ａ５に格納する。また第２プロセッサコア３は自身の第２処理タイミング１０２（本実施例では１０ｍＳ）でＲＡＭ‐Ａ５に格納された出力値を時刻Ｂ毎に読み出して出力ポート９にセットする。よって、両プロセッサコア２、３が正常な場合は、ＲＡＭ−Ａ５を介して出力値が出力ポート９にセットされた後アクチュエータに出力信号が与えられるものである。
【００１９】
そして、第２プロセッサコア３が正常の場合、出力ポート９から出力される出力信号１０３は、第２処理タイミング１０２の時刻Ｂの到来毎に第２プロセッサコア３からのセット処理によって発生されている。ここで、出力ポート９から出力されている出力信号１０はステップモータの駆動信号であり、パルス状の出力信号１０を出力している。また、第１プロセッサコア２の第１処理タイミング１０１の時刻Ａの到来毎に、第１プロセッサコア２は第２プロセッサコア３の診断を行い、故障検知した場合は、故障プロセッサコアである第２プロセッサコア３で実行していた出力値のセット処理を、第１プロセッサコア２に切り替えてセット処理を実行するものである。図２にあるように、第２プロセッサコア３が正常な場合、第２処理タイミング１０２で発生する時刻Ｂに同期して、出力ポート９から正常時の出力信号１０３がオン−オフ出力されている。このオン−オフ出力信号はパルスモータを回転させるための信号として使用される。
【００２０】
そして、ある時刻に第２プロセッサコア３に故障が生じた場合、第１プロセッサコア２がこの故障を自身の第１処理タイミング１０１の時刻Ａeで検出すると、第１プロセッサコア２は第２プロセッサコア３のセット処理を第１プロセッサコア２に移行させる処理を行う。ところが、何らかの原因で第１プロセッサコア２の出力値の演算処理を行う第１処理タイミング１０１の時刻Ａeでセット処理が実行される恐れがある。したがって、この時刻Ａeを起点にして、第１プロセッサコア２によるセット処理が実行され、セット処理の処理タイミングが第２プロセッサコア３の正規の第２処理タイミング１０２とずれてくるものである。尚、本実施例では第１処理タイミングと第２処理タイミングが共に１０ｍＳであるため、時刻Ａｅ以降は同じタイミングとなる。尚、第１処理タイミングと第２処理タイミングの周期が異なれば、時刻Ａeを起点として第２処理タイミングの周期毎にセット処理が実行されることになる。
【００２１】
このように、第２プロセッサコア３に故障が生じると、本実施例では第１プロセッサコア２の第１処理タイミング１０１でセット処理が実行され、正常時の出力ポート１０の信号変化に対して、故障後の信号変化が異なるタイミングとなる可能性がある。図２の例では、出力信号が「時刻Ｔｆ−時刻Ｔｅ」の間の時間となってパルス幅が短くなる。したがって、ステップモータの駆動信号の様なパルス幅を制御している信号においては、パルス幅が短くなると脱調が発生して、ステップモータの実位置と制御の認識位置が異なるという課題を生じる。更に、この後のセット処理のタイミングも正規のセット処理のタイミングとずれてくるので、制御精度に悪影響を与える課題を生じる。
【００２２】
そこで、本実施例ではフリーランタイマ８を用いて、第１プロセッサコア２の第１処理タイミング１０１の時刻Ａ（故障を検出した時刻）と第２プロセッサコア３の第２処理タイミング１０２の時刻Ｂの間の経過時間を求め、第２プロセッサコア３の演算処理の実行周期の時間から経過時間を差し引いた差分時間を求め、第１プロセッサ２において第１プロセッサコア２の処理タイミング１０１の時刻Ａe（故障を検出した時刻）を起点にして差分時間を加算した新たなタイミングを、故障したプロセッサコアの演算処理を実行する処理タイミングとするものである。ここで、本実施例では第１プロセッサコア２の第１処理タイミング１０１によって起動されるプログラムによって異常判定しているため、この時刻Ａが故障検出タイミングとなる。
【００２３】
具体的には、第２プロセッサコア３は自身の第２処理タイミング１０２の時刻Ｂ毎に、フリーランタイマ８の時間情報１０５の時間値を取得してＲＡＭ−Ｂ６に記憶すると共に、前回の処理タイミングで取得したフリーランタイマ８の時間情報１０５の時間値をＲＡＭ−Ｂ６から取得してその時間差を算出してＲＡＭ−Ｃ７に記憶する。この時間差が第２プロセッサコア３の第２処理タイミング１０２の周期となる。したがって、第２処理タイミング１０２の隣接する時刻Ｂ毎に、「時間値Ｔｂ−時間値Ｔａ」、「時間値Ｔｃ−時間値Ｔｂ」、「時間値Ｔｄ−時間値Ｔｃ」、「時間値Ｔｅ−時間値Ｔｄ」の演算を行ない周期が求められるものである。
【００２４】
次に、第１プロセッサコア２が第２プロセッサコア３の故障を検出した場合について説明する。上述したように第１プロセッサコア２の第１処理タイミング１０１によって起動されるプログラムによって異常判定しているため、時刻Ａeが故障検出タイミングとなる。そして、この故障検出タイミングの前では、ＲＡＭ−Ｂ６にはフリーランタイマ８の時間情報１０５の「時間値Ｔｅ」が記憶されている。また、ＲＡＭ−Ｃ７にはフリーランタイマ８の時間情報１０５から「時間値Ｔｅ−時間値Ｔｄ」の周期が記憶されている。
【００２５】
第２プロセッサコア３の故障を検出した場合、第１プロセッサコア２はその時点のフリーランタイマ８の時間情報１０５から「時間値Ｔｆ」を取得する。したがって、ＲＡＭ−Ｂ６に記憶された「時間値Ｔe」と、ＲＡＭ−Ｃ７に記憶された周期「時間値Ｔｅ−時間値Ｔｄ」の値より、次に第２プロセッサコア３が実行するセット処理の第２処理タイミング１０２を新たに算出することができ、これに基づいて第１プロセッサコア２はセット処理を代替処理することになる。
【００２６】
具体的には、「（時間値Ｔｅ−時間値Ｔｄ）−（時間値Ｔｆ−時間値Ｔｅ）」によって求まる「差分時間Ｔｎ」を用いることで、第２プロセッサコア３が実行するセット処理の新たな処理タイミングを求めることができる。ここで、「時間値Ｔｆ−時間値Ｔｅ」は、第２プロセッサコア３の第２処理タイミング１０２の時刻Ｂ（故障検出前の時刻Ｂ）から、故障検出タイミングである第１プロセッサコア２の第１処理タイミング１０１の時刻Ａｅまでの経過時間を表している。したがって、上述の演算は、故障検出タイミング後のセット処理のタイミングまでの残存時間を求めていることになる。よって、図２に示す対策後の出力ポートの信号１０４にあるように、故障検出タイミングである時刻Ａｅに「差分時間Ｔｎ」を加算した新たな時刻Ｂｎ０が、第１プロセッサコア２で代替するセット処理の処理タイミングとされるものである。このように、第２プロセッサコア３で実行されていたセット処理を、第１プロセッサコア２で代替処理を行うため、第１プロセッサコア３の故障検出時刻Ａｅから「差分時間Ｔｎ」の経過後に割り込みが発生するようにフリーランタイマ８に対して割り込み設定処理を行う。
【００２７】
「差分時間Ｔｎ」経過時の新たな時刻Ｂｎ０で第１プロセッサコア２に対して実行される割り込み処理では、故障検出前に第２プロセッサコア３が実行していたセット処理を代替して実行する。この「差分時間Ｔｎ」経過時の時刻Ｂｎ０以降は、図２に示す対策後の出力ポートの信号１０４にあるように、ＲＡＭ−Ｃ７に記憶したフリーランタイマ８の周期「時間値Ｔｅ−時間値Ｔｄ」毎に、時刻Ｂｎ１、時刻Ｂｎ２、時刻Ｂｎ３というように、第１プロセッサコア２に割り込み処理を継続的に行わせることで、第１プロセッサコア２によって出力値のセット処理を代替して行わせることができる。本実施例では、第１処理タイミング１０１の時刻Ａ毎のフリーランタイマ８の時間値に「差分時間Ｔｎ」を加算することで第２処理タイミング１０２の時刻Ｂを生成している。
【００２８】
このような方法によって、第２プロセッサコア３が故障しても、アクチュエータへの出力信号を正規のタイミングで途切れさせることなく継続して出力することができるようになる。このように、時刻Ａｅの前までは第２プロセッサコア３で出力信号１０のオン-オフを制御しているが、時刻Ａｅの後からは第１プロセッサコア２で出力信号１０のオン-オフを制御することになる。
【００２９】
次に、本実施例の具体的な制御フローを図３、図４、及び図５の制御フローチャートに基づき詳細に説明する。これらの制御フローチャートは上述の動作を制御機能として実現した内容を示したものである。
【００３０】
図３は第１プロセッサコア２が実行する演算処理であり、出力値の演算処理と、第２プロセッサコア３の故障判定と、故障判定結果に基づく正常時、及び異常時の演算処理を示している。また、図４は第２プロセッサコア３が実行する演算処理であり、第２プロセッサコア３が正常な場合に行う演算処理を示している。更に、図５は第１プロセッサコア２が、第２プロセッサコア３の異常時に行う演算処理であり、図３に示す第１プロセッサコア２によって第２プロセッサコア３の異常が検出されたときに実行される割り込み処理を示している。以下、それぞれの制御フローチャートについて詳細に説明する。
【００３１】
本実施例においては、図３のフローチャートは第１プロセッサコア２によって１０ｍｓ周期で実行される。まず、ステップＳ２０１で出力値の算出処理を行って出力値を決定し、その出力値をステップＳ２０２でＲＡＭ‐Ａ５に記憶する。次に、ステップＳ２０３で第２プロセッサコア３の診断処理を行い、第２プロセッサコア３が故障しているか判定し、その結果に応じてステップＳ２０４で、第２プロセッサコア３が正常な場合の正常時処理と、第２プロセッサコア３が異常な場合の故障時処理に分岐する。
【００３２】
第２プロセッサコア３が正常な場合には、ステップＳ２０９で第１プロセッサコア２によるコンペアマッチ割込みを禁止して不要な割込み処理を発生しない様に設定した後にエンドに抜ける。つまり、第１プロセッサコア２が第２プロセッサコア３のセット処理を実行しない状態に設定する。また、ステップＳ２０４で第２プロセッサコア３が故障と判定した場合は、ステップＳ２０５で故障判定が初回か或いは２回以上かを判定し、初回以外の場合は何もせずエンドに抜ける、初回の場合は第２プロセッサコアによるセット処理の処理タイミングで割込みを発生させる様に、コンペアマッチ割込みの設定を行なう。この初回の場合は図２に示す処理タイミングＢｎ０を求める処理を実行するため、ステップＳ２０６に移行する。
【００３３】
ステップＳ２０６で、第１プロセッサコア２の第１処理タイミング１０１と第２プロセッサコア３の第２処理タイミング１０２の間の「差分時間Ｔｎ」を求める。このため、フリーランタイマ８の時間情報１０５を使用して、「差分時間Ｔｎ＝（時間値Ｔｅ−時間値Ｔｄ）−（時間値Ｔｆ−時間値Ｔｅ）」の演算を実行する。
【００３４】
次に、ステップＳ２０７で「差分時間Ｔｎ」の経過後にコンペアマッチ割込みを発生させるために、割り込みのための時間情報をフリーランタイマ８のジェネラルレジスタにセットする。故障検出を行った処理タイミングの時刻Ａｅのフリーランタイマ８の「時間値Ｔｆ」に「差分時間Ｔｎ」を加算した時間値をジェネラルレジスタに設定し、その後、フリーランタイマ８の時間情報がジェネラルレジスタにセットされた時間情報と一致すると、ステップＳ２０８でコンペアマッチ割込みを許可する。これにより第２プロセッサコア３が元々出力していた第２タイミングで割込み処理を発生させて、出力値のセット処理を実行することが可能になる。
【００３５】
次に、第２プロセッサコア３が正常な場合に行う演算処理を図４のフローチャートに基づいて説明する。第２プロセッサコア３は１０ｍｓ周期の第２処理タイミングで実行されている。本制御フローチャートでは、ステップＳ２１０がＲＡＭ‐Ａ５に記憶してある出力値を出力ポート９に出力する処理である。またステップＳ２１１以降が、第２プロセッサコア３が故障して動作できなくなった場合の代替処理を実行するための情報を準備する処理ステップである。
【００３６】
ステップＳ２１１は、第２プロセッサコア３の第２処理タイミング１０２を記憶しておくためフリーランタイマ８の「時間値Ｔa、Ｔb、Ｔc、Ｔd、Ｔe、……」を読み出してＲＡＭ-Ｂ６に記憶する。また、ステップＳ２１２は前回のＲＡＭ-Ｂ６に記憶した時間値とステップＳ２１１で記憶した今回の時間値の差から第２プロセッサコア３の第２処理タイミング１０２の周期を算出し、ＲＡＭ‐Ｃ７に記憶する。これらの時間情報は図３に示した第２プロセッサコア３が故障した場合の処理で参照され、演算に利用される。
【００３７】
次に、第２プロセッサコア３の異常が検出されたときに実行される第１プロセッサコア２の割り込み処理を図５の制御フローチャートに基づいて説明する。この割り込み処理は、第２プロセッサコア３が故障した場合に、第１プロセッサコア２で出力値のセット処理を代替するための割り込み処理である。
【００３８】
この制御フローチャートは、図３に示すステップＳ２０７にて設定した処理タイミングで割り込みを発生させて起動される。そして、ステップＳ２２０では、第２プロセッサコア３が図４に示すステップS２１０で実行していた出力値の出力ポート９へのセット処理を、第１プロセッサコア２によって代替処理することになる。次に、ステップＳ２２１では、これ以降の割り込み処理を継続的に行うため、ジェネラルレジスタに新たな処理タイミングを設定する。この場合は時刻Ａ毎のフリーランタイマ８の時間値に「差分時間Ｔｎ」を加算した時間値をジェネラルレジスタにセットすれば良い。したがって、図３のステップＳ２０５で２回目以降の故障判定と判断されるとこの制御フローが実行されることになる。
【００３９】
尚、本実施例では、第１プロセッサコア２と第２プロセッサコア３の処理タイミングの周期を１０ｍｓとして説明しているが、第１プロセッサコア２と第２プロセッサコア３の処理タイミングの周期を変更しても、演算処理を実行したタイミングを計測して故障検出後の処理タイミングを決定しているため、どのような処理タイミングの周期の演算処理においても適用可能である。
【００４０】
以上述べた通り、本発明では故障したプロセッサコア（故障プロセッサコア）の演算処理を正常なプロセッサコア（正常プロセッサコア）で代替して実行する場合、正常プロセッサは、故障を検出した故障検出タイミングと、故障検出タイミングより前の故障プロセッサコアの演算処理の処理タイミングとの間の経過時間を求め、故障プロセッサコアの演算処理の実行周期の時間から経過時間を差し引いた差分時間を求め、故障検出タイミングを起点にして差分時間を加算した新たなタイミングを故障プロセッサコアの演算処理の代替処理タイミングとしている。
【００４１】
これによれば、故障する前のプロセッサコアによる演算処理の処理タイミングと同じ処理タイミングで、正常なプロセッサコアによって故障したプロセッサコアの演算処理を実行することができ、正常な代替演算処理を行うことができる。
【符号の説明】
【００４２】
１…マイクロコンピュータ、２…第１プロセッサコア、３…第２プロセッサコア、４…ＲＡＭ、５…ＲＡＭ−Ａ、６…ＲＡＭ−Ｂ、７…ＲＡＭ−Ｃ、８…周辺モジュールであるフリーランタイマ、９…周辺モジュールである出力ポート、１０…出力信号。
【図１】
0006268071.tif 000002
【図２】
0006268071.tif 000003
【図３】
0006268071.tif 000004
【図４】
0006268071.tif 000005
【図５】
0006268071.tif 000006