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

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

▶ 株式会社ソシオネクストの特許一覧

特許5874492フォールトトレラント制御装置、フォールトトレラントシステムの制御方法
<>
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000002
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000003
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000004
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000005
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000006
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000007
  • 特許5874492-フォールトトレラント制御装置、フォールトトレラントシステムの制御方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5874492
(24)【登録日】2016年1月29日
(45)【発行日】2016年3月2日
(54)【発明の名称】フォールトトレラント制御装置、フォールトトレラントシステムの制御方法
(51)【国際特許分類】
   G06F 11/18 20060101AFI20160218BHJP
【FI】
   G06F11/18 310E
【請求項の数】8
【全頁数】20
(21)【出願番号】特願2012-76159(P2012-76159)
(22)【出願日】2012年3月29日
(65)【公開番号】特開2013-206265(P2013-206265A)
(43)【公開日】2013年10月7日
【審査請求日】2014年12月1日
(73)【特許権者】
【識別番号】514315159
【氏名又は名称】株式会社ソシオネクスト
(74)【代理人】
【識別番号】100094525
【弁理士】
【氏名又は名称】土井 健二
(74)【代理人】
【識別番号】100094514
【弁理士】
【氏名又は名称】林 恒徳
(72)【発明者】
【氏名】松本 光弘
(72)【発明者】
【氏名】福戸山 禎治
(72)【発明者】
【氏名】中村 正和
(72)【発明者】
【氏名】久保 悠司
(72)【発明者】
【氏名】渡辺 裕
(72)【発明者】
【氏名】銭 鏡
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2004−133496(JP,A)
【文献】 特開昭55−166750(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/18
G06F 11/20
(57)【特許請求の範囲】
【請求項1】
バスに接続された3つ以上のプロセッサを同期して同じ命令列を処理させるフォールトトレラント制御装置であって、
前記3つ以上のプロセッサの処理状態である、各プロセッサのレジスタの値を多数決にしたがって比較し、多数に属する処理状態とは異なる処理状態の異常プロセッサを検出する異常プロセッサ検出手段と、
前記異常プロセッサを検出したとき、前記異常プロセッサに対応するカウンタをインクリメントし、前記カウンタが基準値に達した場合に前記異常プロセッサを初期化し前記多数に属する処理状態のプロセッサと同期させるリセット処理を行わせ、達しない場合に前記多数に属する処理状態のプロセッサのレジスタの値を前記異常プロセッサの前記レジスタに書き込む応急処理を行わせる再同期化手段と、を有するフォールトトレラント制御装置。
【請求項2】
請求項1において、
前記異常プロセッサ検出手段は、さらに、前記プロセッサの前記バスへの出力値の不一致を検出することによって前記異常プロセッサを検出し、
前記出力値の不一致が検出された場合の前記応急処理は、前記3つ以上のプロセッサの前記出力値のうち多数に属する出力値を選択して前記バスに出力する処理を含み、
前記再同期化手段は、前記出力値の不一致が検出された場合であって前記カウンタが基準値に達した場合に、前記リセット処理に加えてさらに前記応急処理を行わせるフォールトトレラント制御装置。
【請求項3】
請求項において、
前記レジスタは、前記プロセッサのプログラムカウンタを保持するレジスタ、スタックポインタを保持するレジスタ、有限ステートマシンが有する前記プロセッサの状態情報を保持するレジスタのいずれかを含むフォールトトレラント制御装置。
【請求項4】
請求項2において
前記カウンタは、前記出力値の不一致が検出された場合にインクリメントされる第1のカウンタと、前記レジスタの値の不一致が検出された場合にインクリメントされる第2のカウンタとを有し、
前記基準値は、前記第1のカウンタに対応する第1の基準値と、前記第2のカウンタに対応する第2の基準値とを有するフォールトトレラント制御装置。
【請求項5】
請求項1乃至のいずれかにおいて、
前記再同期化手段は、前記カウンタが前記基準値を超えた回数を示すリセット回数が、基準リセット回数に達したとき、前記異常プロセッサ以外の前記多数に属する処理状態のプロセッサによって処理を継続させるフォールトトレラント制御装置。
【請求項6】
請求項1乃至のいずれかにおいて、
前記再同期化手段は、前記異常プロセッサの前記初期化が基準時間内に終了しないとき、前記異常プロセッサ以外の前記多数に属する処理状態のプロセッサによって処理を継続させるフォールトトレラント制御装置。
【請求項7】
請求項1乃至のいずれかにおいて、
前記基準値は、前記フォールトトレラント制御装置の起動時にリセットされるフォールトトレラント制御装置。
【請求項8】
バスに接続された3つ以上のプロセッサを同期して同じ命令列を処理させるフォールトトレラントシステムの制御方法であって、
前記3つ以上のプロセッサの処理状態である、各プロセッサのレジスタの値を多数決にしたがって比較し、多数に属する処理状態とは異なる処理状態の異常プロセッサを検出する異常プロセッサ検出工程と、
前記異常プロセッサを検出したとき、前記異常プロセッサに対応するカウンタをインクリメントし、前記カウンタが基準値に達した場合に前記異常プロセッサを初期化し前記多数に属する処理状態のプロセッサと同期させるリセット処理を行わせ、達しない場合に前記多数に属する処理状態のプロセッサのレジスタの値を前記異常プロセッサの前記レジスタに書き込む応急処理を行わせる再同期化工程と、を有するフォールトトレラントシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、フォールトトレラント制御装置、フォールトトレラントシステムの制御方法に関する。
【背景技術】
【0002】
従来から、一過性の誤動作によって、システムの処理が継続できなくなることを回避するためにフォールトトレラントシステムが採用される。
【0003】
例えば、フォールトトレラントシステムのロックステップ方式では、複数のプロセッサにクロック同期で同じ命令列を実行させ、全てのプロセッサの動作を比較し、不一致を検出した場合に異常の発生と判定する。不一致は、例えば、故障あるいはその他の外的または内的要因により、同期した他のプロセッサと異なる出力を行う場合に検出される。そして、フォールトトレラントシステムは、異常プロセッサのシステムからの切り離しや、異常プロセッサのリセット等の対処を行わせることにより、システムの動作を継続させる。
【0004】
フォールトトレラントシステムは、異常プロセッサをリセットさせる場合、正常なプロセッサを停止した上で、リセット要求を発行して異常プロセッサを初期化させ、正常なプロセッサの内部レジスタ値等の状態情報を異常プロセッサにコピーさせる。これにより、複数のプロセッサ間の同期を維持しながら、プロセッサで動作するアプリケーションの処理を継続させることができる(例えば、特許文献1、2)。
【0005】
一方、近年、自動車向けの機能安全規格ISO26262が、注目を集めている。機能安全とは、マイコン等の電子システムの構成要素に故障が発生したとしても、被害を最小限に留める機能的な工夫を施すことによって実現する安全を指す。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開平5−313930号公報
【特許文献2】特開2004−133496号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の方法によると、不一致が検出される度に、異常プロセッサがリセットされ、リセットによる初期化処理や状態情報のコピー処理等に時間が費やされる。不一致が検出されてから異常プロセッサが同期した状態に復旧されるまでの間、プロセッサで動作するアプリケーションは停止状態になる。例えば、機能安全が重視される、人命に関わる処理を行うようなマイコンで動作するアプリケーションについては、停止状態が発生することは望ましくない。
【0008】
本発明は、アプリケーションの停止時間を短縮するフォールトトレラント制御装置、フォールトトレラントシステムの制御方法を提案することにある。
【課題を解決するための手段】
【0009】
第1の側面は、バスに接続された3つ以上のプロセッサを同期して同じ命令列を処理させるフォールトトレラント制御装置であって、前記3つ以上のプロセッサの処理状態を比較し異常な処理状態である異常プロセッサを検出する異常プロセッサ検出手段と、前記異常プロセッサを検出したとき、前記異常プロセッサに対応するカウンタをインクリメントし、前記カウンタが基準値に達した場合に前記異常プロセッサを初期化し前記正常な処理状態のプロセッサと同期させるリセット処理を行わせ、達しない場合に正常な処理状態に基づく応急処理を行わせる再同期化手段と、を有する。
【発明の効果】
【0010】
第1の側面によれば、アプリケーションの停止時間を短縮される。
【図面の簡単な説明】
【0011】
図1】フォールトトレラントシステムの構成を示す例図である。
図2】比較選択回路、比較複写回路、再同期化制御部の各構成の詳細を説明する図である。
図3】異常プロセッサのリセット処理の流れを説明する図である。
図4】本実施の形態例におけるフォールトトレラント制御部の処理の流れを説明するフローチャート図である。
図5】内部レジスタの値の不一致が発生し応急処理が行われる場合を示す例図である。
図6】外部アクセスの値の不一致が発生し応急処理が行われる場合を示す例図である。
図7】内部レジスタの値の不一致が発生しリセット処理が行われる場合を示す例図である。
【発明を実施するための形態】
【0012】
以下、図面にしたがって本発明の実施の形態について説明する。ただし、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【0013】
[フォールトトレラントシステムの構成]
図1は、ロックステップ方式を用いたフォールトトレラントシステム10の構成の一例を示す図である。同図におけるフォールトトレラントシステム10は、例えば、ブレーキ制御システム、速度表示システム等の車載向けのシステムである。このような車載向けのシステムは人命に関わることから、システムの信頼性が特に重要視される。
【0014】
図1のフォールトトレラントシステム10は、例えば、クロック同期で同じ命令列を実行する3つのプロセッサx1〜x3、メモリ14、メモリ制御部15、周辺機能回路e1〜en、フォールトトレラントシステム10の制御部20(以下、フォールトトレラント制御部20)を有する。
【0015】
フォールトトレラント制御部20は、例えば、比較選択回路11、比較複写回路13、再同期化制御部12を有する。フォールトトレラント制御部20は、3つのプロセッサx1〜x3の処理状態の比較、及び、処理状態が一致しない場合の異常プロセッサの再同期化処理を行う。フォールトトレラント制御部20と、メモリ制御部15、周辺機能回路e1〜en等は、外部バス16を介して接続される。
【0016】
また、図1のフォールトトレラント制御部20とプロセッサ間のバス線において、点線で示すバス線には、1つのプロセッサから入出力される外部アクセス値(x1b〜x3bのいずれか)、内部レジスタx1R〜x3Rの値(x1a〜x3aのいずれか)、各種信号等が転送される。一方、太線で示すバス線には、3つのプロセッサx1〜x3から入出力される外部アクセス値x1b〜x3b、内部レジスタの値x1a〜x3a、各種信号等が転送される。
【0017】
メモリ14は、フォールトトレラントシステム10で動作するプログラムPRを格納する。プログラムPRは、例えば、ブレーキ制御や速度表示等のアプリケーションプログラムや、プロセッサの初期化プログラムである。メモリ制御部15は、メモリインターフェースとしてメモリ14のアクセス制御を行う。
【0018】
なお、この例において、フォールトトレラントシステム10は、3つのプロセッサx1〜x3を有するが、プロセッサの数は3つに限定されるものではない。本実施の形態例におけるフォールトトレラントシステム10は、3つ以上のプロセッサを有していればよい。
【0019】
[フォールトトレラント制御部20]
フォールトトレラント制御部20は、プロセッサの処理状態を逐一比較し、処理状態の不一致を検出すると、3つの処理状態の多数決に基づいて異常な処理状態のプロセッサ(以下、異常プロセッサ)を特定する。そして、フォールトトレラント制御部20は、異常プロセッサの正常なプロセッサへの再同期化処理を行う。これにより、3つ以上のプロセッサのうち、いずれかのプロセッサの処理状態が異常になっても修復され、システムが継続される。これにより、システムで処理されるアプリケーションが適切に動作する。
【0020】
[プロセッサの処理状態]
本実施の形態例におけるフォールトトレラント制御部20が比較対象とする処理状態とは、各プロセッサから出力される外部アクセスの値x1b〜x3bと、各プロセッサが有する内部レジスタx1R〜x3Rの値x1a〜x3aである。
【0021】
具体的に、外部アクセスの値x1b〜x3bとは、例えば、プロセッサからデータバス、アドレスバス、制御バスに出力される値を示す。フォールトトレラントシステム10では、複数のプロセッサのうち、メインとなるプロセッサの外部アクセスの値が選択され、外部バス16を介して、メモリ14や周辺機能回路e1〜en等の周辺回路に出力される。このため、選択された外部アクセスの値が異常である場合、周辺回路に異常な外部アクセス値が伝播し、メモリ14の破壊や、周辺機能回路e1〜enの暴走が発生してしまう。
【0022】
内部レジスタの値x1a〜x3aとは、例えば、プロセッサが有するプログラムカウンタ(以下、PC)の値、スタックポインタ(以下、SP)の値、有限ステートマシン(以下、FSM)が保持するレジスタの値である。PC値は次にプロセッサx1〜x3が処理する対象の命令のアドレス値を示し、SP値は一時退避されたプロセッサの情報が格納されるメモリのアドレスを示す。そして、FSM値は、プロセッサx1〜x3のパイプラインステージを制御する有限ステートマシンのレジスタであって、パイプラインステージの処理状態を保持するレジスタの値を示す。このため、内部レジスタの値x1a〜x3aが異常である場合、例えば、プログラムの暴走や、パイプラインステージ制御の暴走が発生してしまう。
【0023】
図1のようなフォールトトレラントシステム10では、各プロセッサは、同一の命令列を同期して処理する。また、一般的に、プロセッサx1〜x3は同じ種別のプロセッサである。このため、通常、各プロセッサから出力される外部アクセスの値x1b〜x3b、及び、各プロセッサの内部レジスタの値x1a〜x3aは、同一である。
【0024】
続いて、本実施の形態例におけるフォールトトレラント制御部20を構成する比較選択回路11、比較複写回路13、再同期化制御部12について簡単に説明する。
【0025】
[比較選択回路11]
比較選択回路11は、3つのプロセッサx1〜x3の外部アクセスの値x1b〜x3bを逐一比較し、各外部アクセスの値に不一致が発生した場合に、多数決に基づいて、外部アクセスの値が異常なプロセッサを特定する。また、比較選択回路11は、外部アクセスの値x1b〜x3bに不一致が発生したときの応急処理として値が正常な外部アクセスの値を選択し、外部バス16を介して周辺回路に出力する。例えば、図1のように、プロセッサx1から、異常な外部アクセスの値x1bが出力された場合(ER)、比較選択回路11は、プロセッサx2、またはプロセッサx3の外部アクセスの値を選択して、外部バス16に出力する。
【0026】
[比較複写回路13]
比較複写回路13は、3つのプロセッサx1〜x3の内部レジスタの値x1a〜x3aを逐一比較し、各内部レジスタの値に不一致が発生した場合に、多数決に基づいて、内部レジスタの値が異常なプロセッサを特定する。また、比較複写回路13は、内部レジスタの値x1a〜x3aに不一致が発生したときの応急処理として、正常な内部レジスタの値の異常プロセッサの内部レジスタへの書き込みを指示する。なお、この処理は、プロセッサのレジスタの値を変更することにより、1サイクル程度要する。例えば、図1のように、プロセッサx2の内部レジスタの値x2aが異常である場合(ER2)、比較複写回路13は、例えば、プロセッサx1の内部レジスタ値x1aの、プロセッサx2の内部レジスタx2Rへの書き込みを指示する。
【0027】
[再同期化制御部12]
再同期化制御部12は、外部アクセスの値x1b〜x3bまたは、内部レジスタの値x1a〜x3aに不一致が発生したときに、各プロセッサ間の再同期化を図る。再同期化制御部12は、プロセッサ毎に不一致カウンタを有し、処理状態の不一致が発生したプロセッサに対応する不一致カウンタをインクリメントすると共に、不一致カウンタ値に基づいて判定されたエラーレベルに応じた再同期化処理を指示する。
【0028】
続いて、フォールトトレラント制御部20の各構成の詳細について説明する。
【0029】
図2は、比較選択回路11、比較複写回路13、再同期化制御部12の各構成の詳細について説明する図である。比較選択回路11、比較複写回路13、再同期化制御部12は、それぞれ、3つのプロセッサx1〜x3に接続され、比較選択回路11は外部バス16を介して周辺回路に接続される。
【0030】
[比較選択回路11の構成の詳細]
比較選択回路11は、例えば、比較多数決部111、正常データ選択部112、外部アクセス制御部113有する。比較多数決部111は、各プロセッサx1〜x3の外部アクセスの値x1b〜x3bを逐一比較し、不一致が生じた場合に多数決に基づいて外部アクセスの値が異常なプロセッサを特定する。そして、比較多数決部111は、エラー検出情報として異常プロセッサの番号s1を再同期化制御部12に通知する。
【0031】
正常データ選択部112は、各プロセッサ間で外部アクセスの値に不一致が生じた場合、応急処理として、3つのプロセッサx1〜x3の外部アクセスの値x1b〜x3bの中から正常な外部アクセスの値を選択し、外部バス16に出力する。この応急処理により、不一致が生じた場合でも、正常な外部アクセスの値が選択され外部バス16に出力される。これにより、外部アクセスの値に不一致が生じた場合に、周辺回路に異常な外部アクセス値が伝播することが回避される。
【0032】
外部アクセス制御部113は、プロセッサx1〜x3及び外部バス16へのアクセス制御を行う。外部バス16へのアクセス制御とは、例えば、メインプロセッサx1〜x3の選択、異常プロセッサの切り離し、各プロセッサx1〜x3のウェイト制御、各プロセッサx1〜x3の外部バス16へのライト抑止制御等を示す。
【0033】
[比較複写回路13の構成の詳細]
比較複写回路13は、例えば、比較多数決部131、レジスタ複写制御部132を有する。比較多数決部131は、各プロセッサx1〜x3の内部レジスタの値x1a〜x3aを逐一比較し、不一致が生じた場合に多数決に基づいて内部レジスタの値が異常なプロセッサを特定する。また、比較多数決部131は、エラー検出情報として異常プロセッサの番号s1を再同期化制御部12に通知する。
【0034】
レジスタ複写制御部132は、再同期化制御部12から、応急処理を示すレジスタ複写指示s5の通知を受けると、不一致が生じたレジスタについて、正常プロセッサから異常プロセッサへの値のコピーを指示する。
【0035】
[再同期化制御部12の構成の詳細]
再同期化制御部12は、例えば、監視タイマ121、不一致カウンタ122、初期化終了フラグ123、シーケンス制御部124、リセット回数カウンタ125を有する。監視タイマ121は、異常プロセッサをリセットする場合に実行される初期化プログラムの実行時間を監視するタイマである。また、初期化終了フラグ123は、初期化プログラムの終了を示すフラグである。また、シーケンス制御部124は、プロセッサ間の再同期化を図るシーケンスの実行制御を行う。リセット回数カウンタ125は、プロセッサ毎に管理され、プロセッサのリセット回数を保持するカウンタである。
【0036】
また、不一致カウンタ122はプロセッサ毎に管理され、処理状態の不一致が発生する毎に、異常プロセッサに対応する不一致カウンタ122がインクリメントされる。再同期化制御部12は、異常プロセッサ番号s1の通知を受けると、異常プロセッサの不一致カウンタ122が基準値に達しているか否かを判定する。基準値は、例えば、ユーザによって設定される。再同期化制御部12は、不一致カウンタが基準値に達していない場合はエラーレベル「低」と判定し、異常プロセッサのリセット処理を行わない。
【0037】
一方、不一致カウンタ122が基準値に達する場合、再同期化制御部12は、エラーレベル「中」と判定し、リセット要求sr1〜sr3に基づいて異常プロセッサのリセット処理を指示すると共に、ライト抑止指示s4に基づいてリセット処理中の異常プロセッサの外部バス16への出力を制限する。このとき、異常プロセッサへの正常プロセッサの処理状態のコピー処理が、割り込み要求si1〜si3によって指示される。
【0038】
さらに、異常プロセッサのリセット処理において初期化プログラムが基準時間内に終了しない場合、または、異常プロセッサのリセット回数が基準リセット回数に達した場合、再同期化制御部12は、エラーレベル「高」と判定する。この場合、再同期化制御部12は、異常プロセッサをシステムから切り離し、異常プロセッサ以外の正常なプロセッサによって処理を継続させる。この場合、異常プロセッサの切り離しを指示する切り離し指示s2が、再同期化制御部12から比較選択回路11に通知される。
【0039】
また、再同期化制御部12は、処理状態の不一致が発生したとき、異常プロセッサのエラーレベル「低・中・高」を示すエラーレベル通知s6を周辺回路に通知する。
【0040】
なお、内部レジスタの値の不一致であって、エラーレベル「低」の場合、再同期化制御部12は、比較選択回路11の外部アクセス制御部113を介して、全てのプロセッサに1サイクルのウェイト指示s3を出力すると共に、比較複写回路13のレジスタ複写制御部132に、応急処理を示すレジスタ複写指示s5を通知する。ウェイト指示s3は、プロセッサによる命令フェッチ処理を停止させる信号である。
【0041】
各制御部の処理の流れの詳細については、フローチャート図、及び、具体例に基づいて後述する。ここで、まず、異常プロセッサのリセット処理を行う場合の異常プロセッサ及び正常プロセッサの状態の遷移について説明する。
【0042】
[異常プロセッサのリセット処理の流れ]
図3は、異常プロセッサのリセット処理の流れを説明する図である。同図の(A)はリセット対象の異常プロセッサの状態遷移、(B)は異常プロセッサをリセットするときの2つの正常プロセッサの状態遷移を示す。また、同図の横軸は時間の流れを示し、縦軸はプロセッサの状態を示す。具体的に、状態pt1は正常状態を示し、状態pt2は異常状態を示す。
【0043】
図3の(A)(B)において、アプリケーションプログラムPRの処理中に、タイミングt2において、プロセッサ間の処理状態の不一致が検出される。そこで、正常な処理状態に修復するために、アプリケーションプログラムPRの処理が停止され、異常プロセッサのリセットの準備処理が開始される。
【0044】
図3の(A)におけるタイミングt2からタイミングt3の1サイクル間には、異常プロセッサのリセットの準備処理として、異常プロセッサの特定、及び、正常プロセッサの動作停止指示等が行われる。リセット処理では、異常プロセッサの初期化に加えて、正常なプロセッサの処理状態の異常プロセッサへのコピー処理CPが行われる。このため、予め、正常プロセッサの動作が停止されている必要がある。
【0045】
続いて、図3の(A)のタイミングt3において、異常プロセッサのリセット処理が開始される。このとき、同図(B)のタイミングt3において、2つの正常プロセッサは動作停止状態にある。そして、タイミングt4までの間に、異常プロセッサの初期化、及び、正常プロセッサの処理状態の異常プロセッサへのコピー処理CPが行われる。これにより、異常プロセッサのリセット処理が完了し、正常な状態pt1に遷移する。これにより、タイミングt4からアプリケーションプログラムPRの処理が再開される。
【0046】
このように、リセットの準備処理及びリセット処理が行われる間、即ち、図3(A)の点線の矢印txで示したタイミングt2からタイミングt4までの間、一部のプロセッサの動作が停止状態となる。このため、矢印txの間、アプリケーションプログラムPRの処理についても停止状態となる。リセット処理では、正常なプロセッサの処理状態の異常プロセッサへのコピー処理CPが行われることから、一定の間、アプリケーションプログラムPRの処理が停止されることになる。しかしながら、アプリケーションプログラムPRの停止時間は最小限に押さえられることが望ましい。例えば、車載向けマイコン等で動作する人命に関わる制御を行うアプリケーションプログラムPRの場合、短い停止時間であっても、自動車の走行速度によっては長い走行距離に相当し影響が大きいためである。
【0047】
そこで、本実施の形態例におけるフォールトトレラント制御装置は、3つ以上のプロセッサの処理状態を比較し異常な処理状態である異常プロセッサを検出したとき、異常プロセッサに対応する不一致カウンタをインクリメントし、不一致カウンタが基準値に達した場合に異常プロセッサを初期化し正常な処理状態のプロセッサと同期させるリセット処理を行わせる(エラーレベル「中」)。また、フォールトトレラント制御装置は、不一致カウンタが基準値に達していない場合は、正常な処理状態に基づく応急処理を行わせる(エラーレベル「低」)。
【0048】
本実施の形態例では、不一致カウンタが基準値に達しないエラーレベル「低」の場合、異常プロセッサの処理状態の不一致がノイズ等の一時的な要因によって発生したものとみなされる。この場合、フォールトトレラント制御装置は、リセット処理ではなく、応急処理によって異常な処理状態を解消する。応急処理は、リセット処理に対して、プロセッサの動作停止時間が最小限に抑えられる。これにより、アプリケーションプログラムの停止時間が最小限に抑えられる。
【0049】
一方、不一致カウンタが基準値に達するエラーレベル「中」の場合、一時的ではない恒久的な要因によって、処理状態の不一致が発生している可能性があるとみなされる。そこで、本実施の形態例におけるフォールトトレラント制御装置は、異常プロセッサのリセット処理を指示し、異常な処理状態が解消されるか否かを検証する。そして、本実施の形態例におけるフォールトトレラント制御装置は、異常プロセッサのリセット処理時に実行される初期化プログラムが基準時間内に終了しない場合、または、プロセッサのリセット回数が基準リセット回数に達した場合、エラーレベル「高」として、プロセッサが恒久的な障害を有していると判定し、当該プロセッサをシステムから切り離す。
【0050】
このように、本実施の形態例におけるフォールトトレラント制御装置は、処理状態の不一致の発生回数、及び、リセット処理時の初期化プログラムの実行時間等に基づいて、エラーレベルを判定する。そして、フォールトトレラント制御装置は、エラーレベル「低」の場合は、異常な処理状態が一時的な要因によって発生しているとして、プロセッサのリセット処理を行わない。また、フォールトトレラント制御装置は、エラーレベル「高」の場合は、プロセッサのリセット処理を行うことなく、異常プロセッサをシステムから切り離す。
【0051】
これにより、処理状態の不一致が検出される度に異常プロセッサのリセット処理が行われる場合に対して、リセット処理の頻度が低減され、プロセッサの動作の停止時間が最小限に抑えられる。このため、アプリケーションプログラムの停止時間についても最小限に抑えられる。
【0052】
ここで、フォールトトレラントシステムの一連の制御処理の流れについて、フローチャート図に基づいて後述する。
【0053】
[フォールトトレラント制御の処理の流れ]
図4は、本実施の形態例におけるフォールトトレラント制御部20の処理の流れを説明するフローチャート図である。フォールトトレラント制御部20の比較選択回路11及び比較複写回路13は、3つのプロセッサx1〜x3の処理状態を示す外部アクセスx1b〜x3bの値、内部レジスタの値x1a〜x3aを逐一比較し、処理状態が一致しているか否かを判定する(S10)。そして、処理状態の不一致が検出され(S10のYES)、内部レジスタの値x1a〜x3aの不一致である場合(S11のYES)、比較複写回路13は、各プロセッサx1〜x3の内部レジスタの値x1a〜x3aの多数決に基づいて内部レジスタの値が異常なプロセッサを特定し、再同期化制御部12に通知する。
【0054】
具体的に、比較選択回路11及び比較複写回路13は、次のように多数決をとる。比較選択回路11及び比較複写回路13は、プロセッサx1とプロセッサx2の値、または、プロセッサx1の値とプロセッサx3の値が一致した場合、プロセッサx1の値を多数決の値、即ち、正常な値として出力する。一方、一致しない場合、比較選択回路11及び比較複写回路13は、さらに、プロセッサx2とプロセッサx3の値とを比較し、一致する場合にプロセッサx2の値を多数決の値、即ち、正常な値として出力する。
【0055】
フローチャート図に戻り、続いて、再同期化制御部12は、異常プロセッサの不一致カウンタ122が基準値に達したか否かを判定する(S12)。基準値未満の場合(S12のYES)、エラーレベル「低」と判定され、リセット処理の代わりに、工程S13〜S15の応急処理E1−1が行われる。
【0056】
具体的に、応急処理E1−1として、再同期化制御部12は、まず、全てのプロセッサx1〜x3へのウェイト指示s3をアサートする(S13)。また、再同期化制御部12は、レジスタ複写指示s5を比較複写回路13に出力し、不一致が生じたレジスタについて、正常プロセッサのから異常プロセッサへの値のコピーを指示する(S14)。続いて、再同期化制御部12は、全てのプロセッサx1〜x3へのウェイト指示s3を解除し(S15)、異常プロセッサの不一致カウンタ122をインクリメントする(S16)。そして、再び、処理状態の検出工程(S10)に戻る。なお、不一致カウンタ122は、フォールトトレラントシステム10の起動時、または対応するプロセッサのリセット時に初期化される。
【0057】
このように、内部レジスタの値x1a〜x3aの不一致であってエラーレベル「低」と判定される場合、リセット処理の代わりに、応急処理E1−1によって、プロセッサにおける異常な処理状態が解消されプロセッサの再同期化が図られる。応急処理E1−1では、プロセッサの動作停止時間が1サイクル程度に抑えられるため、リセット処理が行われる場合に対して、アプリケーションプログラムの停止時間が最小限に抑えられる。
【0058】
また、一方、不一致が発生した処理状態が外部アクセス値である場合(S11のNO)、比較選択回路11は、各プロセッサx1〜x3の外部アクセスの値の多数決に基づいて、外部アクセスの値が異常なプロセッサを特定し、再同期化制御部12に通知する。多数決の方法は前述したとおりである。
【0059】
そして、比較選択回路11は、応急処理E1−2として、正常な外部アクセスの値を選択し外部バス16に出力する(S17)。これにより、異常な外部アクセスの値が外部バスに出力され、周辺回路に伝播することが回避される。このように、外部アクセス値の不一致が発生した場合は、リセット処理を行うか否かに関わらず、応急処理E1−2が行われる。これにより、異常な外部アクセス値が周辺回路に伝播することが防止される。続いて、再同期化制御部12は、異常プロセッサの不一致カウンタ122が基準値に達したか否かを判定する(S18)。
【0060】
基準値未満の場合(S18のYES)、再同期化制御部12は、異常プロセッサの不一致カウンタ122をインクリメントする(S19)。このとき、エラーレベル「低」と判定され、リセット処理S22〜S26が回避され、再び、処理状態の検出工程(S10)に戻る。このように、エラーレベル「低」と判定される場合、リセット処理が回避されるため、リセット処理が行われる場合に対して、アプリケーションプログラムの停止時間が最小限に抑えられる。
【0061】
そして、異常プロセッサの不一致カウンタ122が基準値を越える場合(S12のNO、S18のNO)、再同期化制御部12は、異常プロセッサの不一致カウンタ122が基準値を初めて超えたか否か、即ち、リセット回数カウンタ125が基準リセット回数(この例では、2回)に達したか否かを判定する(S21)。初めて超えた場合(S21のYES)、再同期化制御部12は、エラーレベル「中」と判定し、異常プロセッサのリセット処理E2(S22〜S26)を指示する。例えば、車載システムにおいてエラーレベル「中」と判定されたとき、自動車のドライバーに警告メッセージが通知される。
【0062】
再同期化制御部12は、リセット処理E2として、まず、正常なプロセッサに対してウェイト指示s3をアサートし、異常プロセッサにリセット要求(sr1〜sr3のいずれか)をアサートする(S22)。異常プロセッサのリセット要求がアサートされると、初期化プログラムに従って異常プロセッサの初期化が行われる。このとき、再同期化制御部12は、初期化プログラムの実行時間を監視タイマ121によって監視する。
【0063】
そして、再同期化制御部12は、リセット開始時から初期化プログラムが終了し初期化終了フラグ123がセットされるまでの時間が、基準時間内か否かを判定する(S23)。つまり、再同期化制御部12は、対象のプロセッサが、初期化プログラムを完了できない暴走状態にあるか否かを判定する。基準時間は、例えば、ユーザによって設定される。
【0064】
初期化プログラムが基準時間内に終了する場合(S23のYES)、異常プロセッサの初期化が正常に行われたものと判定される。そこで、再同期化制御部12は、異常プロセッサのウェイト指示s3をアサートする(S24)。続いて、再同期化制御部12は、全プロセッサx1〜x3のウェイト指示s3を解除すると共に、全プロセッサx1〜x3の割り込み要求si1〜si3をアサートする(S25)。これにより、全プロセッサx1〜x3が一斉に割込みハンドラを開始し、正常プロセッサから異常プロセッサに処理状態がコピーされる(S26)。このとき、リセットされた異常プロセッサの不一致カウンタ122は初期化される。そして、再同期化制御部12は、リセット回数カウンタ125をインクリメントする(S27)。
【0065】
一方、異常プロセッサの不一致カウンタ122が基準値を超えたのが2回目である場合(S21のNO)、または、初期化プログラムが基準時間内に終了しない場合(S23のNO)、再同期化制御部12は、異常プロセッサの切り離し処理E3を行う(S30、S31〜S32)。この場合、エラーレベル「高」と判定される。例えば、車載システムにおいてエラーレベル「高」と判定されたとき、自動車のドライバーに修理工場に向かうように通知される。
【0066】
まず、再同期化制御部12は、切り離し処理E3として、切り離し指示指示s2を比較選択回路11の外部アクセス制御部113に通知する(S30、S31)。これにより、例えば、異常プロセッサの配線が無効状態に制御され、システムから切り離される。続いて、再同期化制御部12は、初期化プログラムが基準時間内に終了しない場合は(S23のNO)、正常プロセッサのウェイト指示s3がアサートされているため、ウェイト指示s3を解除する(S32)。これにより、異常プロセッサが切り離され、この例では2つの正常プロセッサのみで動作が継続される。
【0067】
具体的に、異常プロセッサの不一致カウンタ122が基準値を超えたのが2回目である場合(S21のNO)、リセット済みの異常プロセッサにおいて、不一致カウンタ122が再び基準値に達したことを意味する。そのため、当該プロセッサは、リセットしても異常な処理状態が解消されない恒久的な障害を有するものと判定され、システムから切り離される。または、初期化プログラムが基準時間内に終了しない場合(S23のNO)、当該プロセッサは、恒久的な障害を有することにより初期化プログラムの実行を完了できず、暴走状態にあると判定され、システムから切り離される。
【0068】
本実施の形態例において、外部アクセス値の不一致が発生する恒久的な要因は、例えば、データバス、アドレスバス、制御バスの配線故障である。このような配線故障を有する場合、プロセッサは、次に実行する命令のメモリからの読み出し処理や、プロセッサx1〜x3の処理状態の一時的なメモリへの格納処理等が行えない。
【0069】
また、内部レジスタ値の不一致が発生する恒久的な要因は、例えば、内部レジスタx1R〜x3Rを構成するフリップフロップの故障である。このような故障を有する場合、プロセッサは、次に実行する命令が格納されるメモリアドレスの演算や、プロセッサx1〜x3の処理状態を一時保存するメモリのアドレス演算、パイプライン処理のシーケンス制御における次回のステートの決定処理等を行うことができない。
【0070】
このように、異常プロセッサが恒久的な障害を有している場合、当該異常プロセッサは初期化プログラムの処理を適切に進めることができない。これにより、初期化プログラムが基準時間を超えても終了せず、異常プロセッサが暴走状態にあると判定される。または、初期化プログラムを終了させることができた場合であっても、異常プロセッサは異常な処理状態を再び誘発してしまう。そのため、このような異常プロセッサは、システムから切り離される。
【0071】
なお、図4のフローチャート図において、フォールトトレラント制御部20は、リセット回数カウンタ125が2回に達した場合に(S21のNO)、異常プロセッサの切り離しを行う。しかしながら、異常プロセッサの切り離しを行うか否かを判定する回数(基準リセット回数)は、2回に限定されるものではない。フォールトトレラント制御部20は、異常プロセッサのリセット回数が、例えばユーザによって設定された基準リセット回数に達したときに、異常プロセッサを切り離してもよい。この場合、異常プロセッサのリセット回数(リセット回数カウンタ125)は、例えば、フォールトトレラントシステム10の起動時にリセットされる。
【0072】
続いて、図4のフローチャート図で説明したフォールトトレラント制御部20の処理を、具体的に基づいて説明する。まず、内部レジスタの値の不一致が生じ、応急処理によって再同期化を図る場合の具体例について説明する。
【0073】
[具体例:応急処理による再同期化(内部レジスタの値の不一致)]
図5は、内部レジスタの値の不一致が発生し応急処理が行われる場合の具体例を示す例図である。この例では、プロセッサx2において異常な内部レジスタの値が検知される。また、同図左の矢印c1の示すサイクルは、処理状態の不一致が発生したサイクルと同一サイクルを、矢印c2の示すサイクルは1サイクルを示す。
【0074】
比較複写回路13は、逐一、各プロセッサx1〜x3のアプリケーションプログラムPR実行時の内部レジスタの値を比較し、プロセッサ間で不一致が発生していないか否かを判定する。そして、比較複写回路13は、内部レジスタの値の多数決の結果、異常プロセッサがプロセッサx2であることを特定し、再同期化制御部12に、異常プロセッサ番号s1「2」を通知する。
【0075】
続いて、再同期化制御部12は、異常プロセッサ番号s1の通知を受けて、異常プロセッサの不一致カウンタ122が基準値に達したか否かを判定する。この例では、このとき、不一致カウンタ122は基準値に達しない。そこで、レジスタ複写制御部132は、比較選択回路11の外部アクセス制御部113を介してウェイト指示s3を通知し、全てのプロセッサx1〜x3に1サイクルのウェイト指示s3をアサートする。ウェイト指示s3がアサートされたことによりプロセッサx1〜x3は、命令フェッチ処理を停止する。これにより、プロセッサx1〜x3の動作が停止される。
【0076】
また、再同期化制御部12は、比較複写回路13にレジスタ複写指示s5を通知する。レジスタ複写指示s5を受けて、比較複写回路13のレジスタ複写制御部132は、プロセッサ2の不一致が生じたレジスタに、プロセッサx1のレジスタの値をコピーする。続いて、再同期化制御部12は、比較選択回路11の外部アクセス制御部113を介して、全てのプロセッサx1〜x3のウェイト指示s3を解除する。その結果、プロセッサx1〜x3の動作が再開される。そして、再同期化制御部12は、プロセッサx2の不一致カウンタ122をインクリメントする。
【0077】
このように、図5の具体例では、プロセッサx2の不一致カウンタ122が基準値に達しない場合、ノイズによって不一致の要因が発生した可能性が高いと判定され、リセット処理ではなく、応急処理E1−1によって、プロセッサx2の再同期化が図られる。内部レジスタの応急処理E1−1において、プロセッサx1〜x3の停止時間は1サイクル程度に抑えられる。これにより、リセット処理が行われる場合に対して、プロセッサx1〜x3の停止時間が最小限に抑えられる。この結果、アプリケーションプログラムPRの停止時間が最小限に抑えられ、処理の信頼性が向上する。
【0078】
続いて、外部アクセスの値の不一致が生じ、応急処理によって再同期化を図る場合の具体例について説明する。
【0079】
[具体例:応急処理による再同期化(外部アクセスの値の不一致)]
図6は、外部アクセスの値の不一致が発生し応急処理が行われる場合の具体例を示す例図である。この例では、プロセッサx1から異常な外部アクセスの値x1bが出力される。また、同図左の矢印c11の示すサイクルは、処理状態の不一致が発生したサイクルと同一サイクルを示す。
【0080】
比較選択回路11は、逐一、各プロセッサx1〜x3のアプリケーションプログラム実行時の外部アクセスの値を比較し、プロセッサ間で不一致が発生していないか否かを判定する。そして、比較選択回路11は、外部アクセスの値の多数決の結果、異常プロセッサがプロセッサx1であることを特定し、再同期化制御部12に、異常プロセッサ番号s1「1」を通知する。また、比較選択回路11の外部アクセス制御部113は、プロセッサx1ではなく、正常なプロセッサx2の外部アクセスの値を外部バスに出力するように指示s11する。このとき、プロセッサx1〜x3の動作は継続される。
【0081】
続いて、再同期化制御部12は、異常プロセッサ番号s1の通知を受けて、異常プロセッサx1の不一致カウンタ122が基準値に達したか否かを判定する。この例では、このとき、不一致カウンタ122は基準値に達しない。そこで、再同期化制御部12は、プロセッサx1の不一致カウンタ122をインクリメントする。
【0082】
このように、図6の具体例においても、プロセッサx1の不一致カウンタ122が基準値に達しない場合、ノイズによって不一致が発生した可能性が高いと判定され、リセット処理が回避される。外部アクセスの応急処理E1−2では、プロセッサx1〜x3の動作は停止されないため、リセット処理が行われる場合に対して、プロセッサx1〜x3の停止自体が回避される。この結果、アプリケーションプログラムPRの処理が継続され、処理の信頼性が向上する。
【0083】
続いて、内部レジスタの値の不一致が生じ、リセット処理によって再同期化を図る場合の具体例について説明する。
【0084】
[具体例:リセット処理による再同期化]
図7は、内部レジスタの値の不一致が発生しリセット処理が行われる場合の具体例を示す例図である。この例では、図5の具体例と同様にして、プロセッサx2において異常な内部レジスタの値x2aが検知される。また、同図左の矢印c21の示すサイクルは、処理状態の不一致が発生したサイクルと同一サイクルを、矢印c22の示すサイクルは、再同期化処理のサイクルを示す。
【0085】
比較複写回路13は、内部レジスタの値の多数決の結果、異常プロセッサがプロセッサx2であることを特定し、再同期化制御部12に、異常プロセッサ番号s1「2」を通知する。続いて、再同期化制御部12は、異常プロセッサ番号s1の通知を受けて、異常プロセッサx2の不一致カウンタ122が基準値に達したか否かを判定する。この例では、不一致カウンタ122が基準値に達する。また、この例では、不一致カウンタ122が初めて基準値に達したものとする。
【0086】
そこで、再同期化制御部12は、外部アクセス制御部113を介してウェイト指示s3を通知し、プロセッサx1、x3のウェイト指示s3をアサートすると共に、プロセッサx2のリセット要求sr2をアサートする。ウェイト指示s3がアサートされたことによりプロセッサx1、x3の命令フェッチ処理が停止され、動作停止状態となる。プロセッサx2では、リセット要求sr2に基づいて、初期化プログラムが実行される。また、このとき、プロセッサx2には、ライト抑止指示s4が通知され、初期化プログラム実行中の外部バス16への出力が抑止される。再同期化制御部12の監視タイマ121は、初期化プログラムの実行時間の監視を開始する(s21)。
【0087】
プロセッサx2の初期化プログラムが完了すると、プロセッサx2は再同期化制御部12に、初期化完了の信号s22を通知する。再同期化制御部12は、初期化完了を検知すると、初期化終了フラグ123を制御し、外部アクセス制御部113を介してウェイト指示s3を通知して、プロセッサx2のウェイト指示s3をアサートする。これにより、プロセッサx1、x3に加えて、初期化が完了したプロセッサx2についても動作が停止される。
【0088】
続いて、再同期化制御部12は、プロセッサx1〜x3の割り込み要求si1〜si3をアサートすると共に、比較選択回路11の外部アクセス制御部113を介して、プロセッサx1〜x3のウェイト指示s3を解除する。これにより、プロセッサx1〜x3において、割り込みハンドラの処理が開始され、プロセッサx1の処理状態がプロセッサx2にコピーされる。コピーが完了すると、プロセッサx2の再同期化処理が完了する。続いて、再同期化制御部12は、プロセッサx1〜x3の割り込み要求si1〜si3を解除し、全てのプロセッサx1〜x3の動作を再開させる。そして、再同期化制御部12は、リセット回数カウンタ125をインクリメントする。
【0089】
このように、プロセッサx2の不一致カウンタ122が基準値に達する場合は、異常プロセッサのリセット処理によって、各プロセッサ間の再同期化が図られる。異常プロセッサがリセットされることにより、プロセッサの初期化によって解消可能な障害については解消される。また、異常プロセッサがリセットされることにより、リセット後に、再び、処理状態の不一致が発生するか否かが検証され、異常プロセッサが恒久的な障害を有しているか否かが判定可能となる。
【0090】
なお、図7の例では、リセット処理時の初期化プログラムが基準時間内に終了する例を示した。しかし、初期化プログラムが基準時間に終了しない場合、再同期化制御部12は、プロセッサx2の切り離し指示s2を外部アクセス制御部113に通知し、プロセッサx2をシステムから切り離す。そして、プロセッサx1、x3のウェイト指示s3がアサートされている場合、再同期化制御部12は、ウェイト指示s3を解除する。これにより、プロセッサx1、x3の動作が再開され、2つのプロセッサによって処理が継続される。リセット回数カウンタ125が基準リセット回数に達する場合についても、同様に、プロセッサx2がシステムから切り離され、2つのプロセッサによって処理が継続される。
【0091】
このように、プロセッサx2の初期化が基準時間内に終了しない場合、プロセッサx2のリセット回数が基準リセット回数に達する場合(この例では2回)、異常プロセッサがリセット処理によっても解消されない恒久的な障害を有すると判定され、システムから切り離される。これにより、処理状態の不一致が継続して発生することが防止され、システムで動作するアプリケーションプログラムの停止時間が最小限に抑えられることにより、処理の信頼性が向上する。
【0092】
以上のようにして、本実施の形態例におけるフォールトトレラント制御装置は、3つ以上のプロセッサの処理状態を比較し異常な処理状態である異常プロセッサを検出する。そして、フォールトトレラント制御装置は、異常プロセッサを検出したとき、異常プロセッサに対応する不一致カウンタ(カウンタ)をインクリメントし、不一致カウンタが基準値に達した場合に異常プロセッサを初期化し正常な処理状態のプロセッサと同期させるリセット処理を行わせ、達していない場合に正常な処理状態に基づく応急処理を行わせる。
【0093】
これにより、フォールトトレラント制御装置は、処理状態の不一致が発生した場合であっても処理状態の異常なプロセッサの不一致カウンタが基準値に達していない場合は、ノイズ等の一時的な要因によって処理状態の不一致が発生したとみなし、当該異常プロセッサのリセット処理を行わない。即ち、処理状態の不一致が発生する度にリセット処理が行われることが回避される。この場合、応急処理のみによって再同期化が図られ、アプリケーションプログラムの停止時間が短縮、または回避され、アプリケーションプログラムの処理の信頼性が向上する。特に人命に関わるようなマイコンで動作するアプリケーションプログラムの場合、停止時間が短いことが重要となる。
【0094】
具体的に、本実施の形態例におけるフォールトトレラント制御装置は、プロセッサのバスへの出力値の不一致を検出することによって異常プロセッサを検出する。フォールトトレラント制御装置は、出力値の不一致を検出した場合、異常プロセッサに対応する不一致カウンタが基準値に達するか否かに関わらず、応急処理として、3つ以上のプロセッサの外部バスへの出力値のうち正常な出力値を選択してバスに出力させる。これにより、周辺回路に異常な外部アクセスの値が伝播することが回避される。また、この応急処理ではプロセッサの動作が停止されないため、リセット処理が行われない場合は、アプリケーションプログラムの処理の停止が回避される。
【0095】
また、本実施の形態例におけるフォールトトレラント制御装置は、前記プロセッサのレジスタの値の不一致を検出することによって前記異常プロセッサを検出する。フォールトトレラント制御装置は、内部レジスタの値の不一致を検出すると、異常プロセッサに対応する不一致カウンタが基準値に達していない場合、リセット処理の代わりに、応急処理として異常プロセッサのレジスタに正常なレジスタの値を書き込む。この応急処理では、プロセッサの停止時間が1サイクル程度の最小限に抑えられるため、リセット処理が行われる場合に対して、アプリケーションプログラムの処理の停止時間が最小限に抑えられる。
【0096】
さらに、処理状態の異常なプロセッサに対応する不一致カウンタが基準値に達した場合、フォールトトレラント制御装置は、一時的ではない要因によって処理状態の不一致が発生している可能性があると判定し、異常プロセッサのリセット処理を行う。これにより、リセット処理によって解消される障害については解消されると共に、リセット回数が基準リセット回数に達したか否かを検証することにより、当該異常プロセッサが恒久的な障害を有するか否かが判定される。
【0097】
そして、異常プロセッサのリセット回数が基準のリセット回数に達する場合、フォールトトレラント制御装置は、当該異常プロセッサがリセット処理によって解消されない恒久的な障害有するものと判定し、異常プロセッサ以外の正常な処理状態のプロセッサのみによってシステムを継続させる。または、異常プロセッサのリセット処理時に初期化プログラム等の初期化処理が基準時間内に終了しない場合についても、フォールトトレラント制御装置は、当該異常プロセッサが恒久的な障害有するものと判定し、異常プロセッサ以外の正常な処理状態のプロセッサのみによってシステムを継続させる。これにより、異常な処理状態が継続して発生することが防止され、アプリケーションプログラムの停止時間が最小限に抑えられると共に、処理の信頼性が向上する。
【0098】
ところで、本実施の形態例におけるフォールトトレラント制御装置は、プロセッサの外部アクセスの値、及び、内部レジスタの値の不一致を、比較対象の処理状態としているが、外部アクセス、または、内部レジスタの値のいずれかを比較対象の処理状態としてもよい。この場合についても、処理状態の不一致の要因が一時的な要因であるとみなされる場合には、異常プロセッサのリセット処理が回避される。これにより、アプリケーションプログラムの停止時間が短縮または回避される。
【0099】
なお、本実施の形態例におけるフォールトトレラント制御装置は、外部アクセス値の不一致が検出された場合にインクリメントされる不一致カウンタと、内部レジスタの値の不一致が検出された場合にインクリメントされる不一致カウンタとを別に有してもよい。この場合、フォールトトレラント制御装置は、各不一致カウンタに対応する基準値をそれぞれ有する。これにより、一時的な要因による不一致か否かの判定の元となる基準値が、内部レジスタ、外部アクセスの不一致カウンタそれぞれについて設定可能となる。
【0100】
例えば、ノイズを起因とする処理状態の不一致は、内部レジスタよりも、外部アクセスにおいてより発生しやすい。そのため、例えば、ユーザは、内部レジスタの不一致カウンタに対応する基準値を、外部アクセスの不一致カウンタに対応する基準値よりも小さな値に設定する。これにより、フォールトトレラント制御装置は、より適切な、リセット処理の要否判定を実現できる。
【0101】
また、外部アクセスの値の不一致は、内部レジスタの値の不一致に起因して発生している場合がある。そこで、ユーザは、例えば、内部レジスタの値の不一致カウンタに対応する基準値を、より小さな値に設定する。これにより、内部レジスタの値の不一致が基準値に達したときに異常プロセッサがリセットされ、外部アクセスの不一致が合わせて解消される。これにより、異常な処理状態が発生することが防止され、アプリケーションプログラムの停止時間が最小限に抑えられる。
【0102】
以上の実施の形態をまとめると、次の付記のとおりである。
【0103】
(付記1)
バスに接続された3つ以上のプロセッサを同期して同じ命令列を処理させるフォールトトレラント制御装置であって、
前記3つ以上のプロセッサの処理状態を比較し異常な処理状態である異常プロセッサを検出する異常プロセッサ検出手段と、
前記異常プロセッサを検出したとき、前記異常プロセッサに対応するカウンタをインクリメントし、前記カウンタが基準値に達した場合に前記異常プロセッサを初期化し前記正常な処理状態のプロセッサと同期させるリセット処理を行わせ、達しない場合に正常な処理状態に基づく応急処理を行わせる再同期化手段と、を有するフォールトトレラント制御装置。
【0104】
(付記2)
付記1において、
前記異常プロセッサ検出手段は、前記プロセッサの前記バスへの出力値の不一致を検出することによって前記異常プロセッサを検出し、
前記出力値の不一致が検出された場合の前記応急処理は、前記3つ以上のプロセッサの前記出力値のうち正常な出力値を選択して前記バスに出力する処理を含み、
前記再同期化手段は、前記出力値の不一致が検出された場合であって前記カウンタが基準値に達した場合に、前記リセット処理に加えてさらに前記応急処理を行わせるフォールトトレラント制御装置。
【0105】
(付記3)
付記1または2において、
前記異常プロセッサ検出手段は、前記プロセッサのレジスタの値の不一致を検出することによって前記異常プロセッサを検出し、
前記レジスタの値の不一致が検出された場合の前記応急処理は、前記異常プロセッサの前記レジスタに正常なレジスタの値を書き込む処理を含むフォールトトレラント制御装置。
【0106】
(付記4)
付記3において、
前記レジスタは、前記プロセッサのプログラムカウンタを保持するレジスタ、スタックポインタを保持するレジスタ、有限ステートマシンが有する前記プロセッサの状態情報を保持するレジスタのいずれかを含むフォールトトレラント制御装置。
【0107】
(付記5)
付記3または4において、
前記カウンタは、前記出力値の不一致が検出された場合にインクリメントされる第1のカウンタと、前記レジスタの値の不一致が検出された場合にインクリメントされる第2のカウンタとを有し、
前記基準値は、前記第1のカウンタに対応する第1の基準値と、前記第2のカウンタに対応する第2の基準値とを有するフォールトトレラント制御装置。
【0108】
(付記6)
付記1乃至5のいずれかにおいて、
前記再同期化手段は、前記カウンタが前記基準値を超えた回数を示すリセット回数が、基準リセット回数に達したとき、前記異常プロセッサ以外の前記正常な処理状態のプロセッサによって処理を継続させるフォールトトレラント制御装置。
【0109】
(付記7)
付記1乃至5のいずれかにおいて、
前記再同期化手段は、前記異常プロセッサの前記初期化が基準時間内に終了しないとき、前記異常プロセッサ以外の前記正常な処理状態のプロセッサによって処理を継続させるフォールトトレラント制御装置。
【0110】
(付記8)
付記1乃至7のいずれかにおいて、
前記基準値は、前記フォールトトレラント制御装置の起動時にリセットされるフォールトトレラント制御装置。
【0111】
(付記9)
バスに接続された3つ以上のプロセッサを同期して同じ命令列を処理させるフォールトトレラントシステムの制御方法であって、
前記3つ以上のプロセッサの処理状態を比較し異常な処理状態である異常プロセッサを検出する異常プロセッサ検出工程と、
前記異常プロセッサを検出したとき、前記異常プロセッサに対応するカウンタをインクリメントし、前記カウンタが基準値に達した場合に前記異常プロセッサを初期化し前記正常な処理状態のプロセッサと同期させるリセット処理を行わせ、達していない場合に正常な処理状態に基づく応急処理を行わせる再同期化工程と、を有するフォールトトレラントシステムの制御方法。
【符号の説明】
【0112】
10:フォールトトレラントシステム、x1〜x3:プロセッサ、14:メモリ、15:メモリ制御部、e1〜en:周辺機能回路、20:フォールトトレラント制御部、11:比較選択回路、12:再同期化制御部、13:比較複写回路
図1
図2
図3
図4
図5
図6
図7