(57)【要約】      （修正有）【課題】冗長化された演算部の割込処理を適切に同期化させる。【解決手段】冗長演算システム１は、演算部２Ａ〜２Ｃの各々が、原振クロックを出力する水晶発振器と、原振クロックのクロック数を計数するカウンタと、カウンタのカウント値に基づき、演算部２Ａ〜２Ｃの位相同期クロックＰＳＣ１〜ＰＳＣ３を生成するクロック出力回路と、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、その差分に応じて、自演算部の位相同期クロックＰＳＣの周期を補正するクロック補正回路とを含むクロック生成回路と、位相同期クロックＰＳＣ１〜ＰＳＣ３に同期して割込要求ＩＲを検知するとともに、自演算部の検知結果と他の演算部の検知結果とを対比し、検知結果が一致したときに、自演算部のＭＰＵ６Ａ〜６Ｃに割込開始信号ＩＳ１〜ＩＳ３を出力する割込制御回路７Ａ〜７Ｃとを備える。【選択図】図１
2011248809.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算部を備えた冗長構成を有し、外部からの割込要求に応じて該複数の演算部の各々が割込処理を行う冗長演算システムであって、
前記複数の演算部の各々が、
所定の原振クロックを出力する発振器と、
前記原振クロックのクロック数を計数するカウンタと、
該カウンタのカウント値に基づき、該演算部の動作クロックを生成するクロック出力回路と、
自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、その差分に応じて、自演算部の前記動作クロックの周期を補正する補正回路と、
前記周期が補正された動作クロックに同期して前記割込要求を検知する検知回路と、
自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とを対比し、それらの検知結果が一致したときに、自演算部の演算プロセッサに割込開始信号を出力する割込制御回路とを備えることを特徴とする冗長演算システム。
【請求項２】
前記割込制御回路は、自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とが一致しないときに、前記周期が補正された動作クロックの１クロック分の期間に亘って前記割込開始信号の出力を待機し、その期間の経過後に、該割込開始信号を出力することを特徴とする請求項１に記載の冗長演算システム。
【請求項３】
前記カウンタは、１からＮ（Ｎは４以上の偶数）までのカウント値で前記原振クロックを計数し、
前記クロック出力回路は、前記カウンタのカウント値がＮ／２に達したときに、前記動作クロックのレベルをHi又はLowの一方とし、該カウンタのカウント値がＮに達したときに、該動作クロックのレベルをHi又はLowの他方とすることで、前記動作クロックを生成し、
前記補正回路は、前記カウンタのカウント値がＮ−ｋ（ｋは、Ｎよりも小さく、かつ、２以上の整数）に達したときに、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、該自演算部のカウンタのカウント値が該他の演算部のカウンタのカウント値よりも遅れている場合に、該自演算部のカウンタのカウント値をスキップさせることを特徴とする請求項１又は２に記載の冗長演算システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算部を備えた冗長演算システムに関し、特に、割込処理を同期化させるのに適した冗長演算システムに関する。
【背景技術】
【０００２】
プロセッサが冗長化された冗長演算システム（電子計算機システム）では、動作クロックが異なるプロセッサを用いた場合、多重化されたプロセッサに同期した割込を入力することができない。このため、複数のプロセッサの間で、動作するソフトウェアの割込処理を同期させることができない。
【０００３】
そこで、例えば、特許文献１には、多重化されたプロセッサに対して外部から割込要求がなされたときに、各プロセッサでの割込処理の実行タイミングを制御し、割込処理を同期させる同期化システムが提案されている。
【０００４】
この同期化システムは、図１０に示すように、相手方のプロセッサとの間で内部動作状態を互いに通知するとともに、外部からの割込要求を保持する通信回路５１と、自プロセッサの内部処理を一時的に停止させる処理停止回路５２と、自プロセッサの処理結果を保持し、バス５３への出力を一時停止するバス制御回路５４と、自プロセッサの内部動作を監視し、通信回路５１の通知内容に基づいてバス制御回路５４及び処理停止回路５２を起動する監視回路５５とを、プライマリプロセッサ５６及びセカンダリプロセッサ５７の各々に備えるとともに、これらのプロセッサ５６、５７の間に、両者の同期状態を判定する同期化処理部５８を備える。
【０００５】
上記同期化システムでは、プライマリプロセッサ５６とセカンダリプロセッサ５７が動作する期間、両プロセッサ５６、５７が、通信回路５１を通じて実行中の命令を相互に通知し合い、自身が相手方プロセッサと同じ命令を実行しているか否かを判定し続ける。その過程で、外部からの割込要求が発生し、その際、プライマリプロセッサ５６とセカンダリプロセッサ５７が異なる命令を実行していた場合には、監視回路５５によって、プライマリプロセッサ５６とセカンダリプロセッサ５７のどちらの動作が先行するかを解析する。
【０００６】
そして、先行する側のプロセッサにおいて、処理停止回路５２によりプロセッサの内部処理を一時的に停止するとともに、バス５３への処理結果の出力を停止する。その後、遅れる側のプロセッサの処理が先行プロセッサに追い付いた段階で、先行プロセッサの停止操作を解除し、これにより、同一タイミングで２つのプロセッサ５６、５７が割込処理を開始することを可能にする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平８−６８００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の同期化システムでは、プロセッサの内部動作を相互に通知し合い、互いに監視し合うことで、割込処理を同期させるように構成されているが、プロセッサの内部動作を監視すること自体が困難であり、必ずしも現実的とは言えない。
【０００９】
また、上記の同期化システムでは、プロセッサの内部動作を監視するための回路、バスへの信号出力タイミングを制御するためのバス制御回路、及び、内部処理を一時的に停止させる処理停止回路等の多数の回路が必要となるため、回路規模の大型化や製品コストの増大を招くという問題がある。
【００１０】
さらに、上記の同期化システムでは、出力停止や処理停止が不可欠となり、性能低下や応答性能の低下を引き起こす。応答性能の低下は、リアルタイム性が要求される冗長演算システムでは軽視することができない。
【００１１】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、複数の演算部を冗長化させた冗長化システムにおいて、外部からの割込要求を受けた際に、複数の演算部の割込処理を適切に同期化させることが可能な冗長演算システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明は、複数の演算部を備えた冗長構成を有し、外部からの割込要求に応じて該複数の演算部の各々が割込処理を行う冗長演算システムであって、前記複数の演算部の各々が、所定の原振クロックを出力する発振器と、前記原振クロックのクロック数を計数するカウンタと、該カウンタのカウント値に基づき、該演算部の動作クロックを生成するクロック出力回路と、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、その差分に応じて、自演算部の前記動作クロックの周期を補正する補正回路と、前記周期が補正された動作クロックに同期して前記割込要求を検知する検知回路と、自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とを対比し、それらの検知結果が一致したときに、自演算部の演算プロセッサに割込開始信号を出力する割込制御回路とを備えることを特徴とする。
【００１３】
本発明によれば、カウンタ、クロック出力回路及び補正回路の構成により、演算部間での位相ずれ量を縮小補正した動作クロック（以下、「位相同期クロック」という）を生成することができる。そして、検知回路において、上記の位相同期クロックに同期して外部からの割込要求を検知するため、複数の演算部の間で、大きなずれを伴うことなく、割込要求を検知することができる。但し、その場合でも、割込要求の入力タイミングによっては、演算部の間で割込要求の検知タイミングにずれが生じる場合があるが、割込制御回路により、そのずれ分に応じて割込開始信号の出力タイミングを調整し、割込処理を同期化させることが可能になる。
【００１４】
上記冗長演算システムにおいて、前記割込制御回路が、自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とが一致しないときに、前記周期が補正された動作クロックの１クロック分の期間に亘って前記割込開始信号の出力を待機し、その期間の経過後に、該割込開始信号を出力することができる。
【００１５】
上記冗長演算システムにおいて、前記カウンタが、１からＮ（Ｎは４以上の偶数）までのカウント値で前記原振クロックを計数し、前記クロック出力回路が、前記カウンタのカウント値がＮ／２に達したときに、前記動作クロックのレベルをHi又はLowの一方とし、該カウンタのカウント値がＮに達したときに、該動作クロックのレベルをHi又はLowの他方とすることで、前記動作クロックを生成し、前記補正回路が、前記カウンタのカウント値がＮ−ｋ（ｋは、Ｎよりも小さく、かつ、２以上の整数）に達したときに、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、該自演算部のカウンタのカウント値が該他の演算部のカウンタのカウント値よりも遅れている場合に、該自演算部のカウンタのカウント値をスキップさせることができる。
【発明の効果】
【００１６】
以上のように、本発明によれば、複数の演算部を冗長化させた冗長化システムにおいて、外部からの割込要求を受けた際に、複数の演算部の割込処理を適切に同期化させることが可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明にかかる冗長演算システムの一実施の形態を示す構成図である。
【図２】図１のクロック生成回路を示す構成図である。
【図３】図２の補正回路で実行する論理和演算の方法を示す図である。
【図４】位相同期クロックの生成処理を示すフローチャートである。
【図５】図４に示す処理の下での動作例を示すタイミング図である。
【図６】図４に示す処理の下での動作例を示すタイミング図である。
【図７】割込処理の同期化処理を示すフローチャートである。
【図８】外部機器からの割込要求と演算部の位相同期クロックとの関係を示すタイミング図である。
【図９】冗長演算システムの基本構成を示す図である。
【図１０】従来の割込処理の同期化システムの一例を示す構成図である。
【発明を実施するための形態】
【００１８】
次に、発明を実施するための形態について、図面を参照しながら詳細に説明する。
【００１９】
ここでは、本発明にかかる冗長演算システムの実施形態の説明に先立ち、プロセッサを多重化した冗長演算システムの基本構成について、図９を参照しながら簡単に説明する。
【００２０】
図９は、複数の演算部を備えた冗長演算システムの構成例を示し、この冗長演算システム３０は、並列処理を行う３つの演算部３１Ａ〜３１Ｃと、演算部３１Ａ〜３１Ｃの処理結果の多数決を取り、一致数が多い処理結果（正常な処理結果）のみを外部機器３５に出力する多数決処理部３２とを備える。
【００２１】
上記冗長演算システム３０によれば、演算部３１Ａ〜３１Ｃのうちの１つに故障が生じても、正常に動作する他の演算部によって処理を継続することができる。また、故障が生じた演算部から異常な処理結果が出力される場合にも、それを多数決処理部３２で遮断し、外部機器３５に出力されるのを回避することができる。
【００２２】
また、図９に示す冗長演算システム３０では、演算部３１Ａ〜３１Ｃの各々と１対１で対応し、水晶発振器３３Ａ〜３３Ｃの出力に基づいて動作クロックＣＫ１〜ＣＫ３を生成するクロック生成回路３４Ａ〜３４Ｃが設けられる。この場合、演算部３１Ａの処理時間は、クロック生成回路３４Ａから出力される動作クロックＣＫ１の周波数に依存し、また、演算部３１Ｂ、３１Ｃの処理時間も同様に、動作クロックＣＫ２、ＣＫ３の周波数に依存する。
【００２３】
しかし、クロック生成回路３４Ａ〜３４Ｃの水晶発振器３３Ａ〜３３Ｃには個体差があり、同一仕様のものであっても、水晶発振器３３Ａ〜３３Ｃ間で原振クロックの周波数や位相に微小なずれが生じる。この原振クロックのずれは、動作クロックＣＫ１〜ＣＫ３に反映されるため、演算部３１Ａ〜３１Ｃの動作タイミングのずれを招き、結果的に演算部３１Ａ〜３１Ｃを非同期で動作させることになる。
【００２４】
そこで、冗長演算システム３０では、多数決処理部３２において、演算部３１Ａ〜３１Ｃのうちの１つより処理結果を受信してから多数決処理を開始するまでの間に、一定の待機期間を設け、全ての演算部３１Ａ〜３１Ｃの処理結果が出揃うのを待って処理を開始するようにしている。これにより、演算部３１Ａ〜３１Ｃの処理時間のずれを打ち消し、システムの並列処理を可能としている。
【００２５】
但し、演算部３１Ａ〜３１Ｃの処理時間のずれは、システムを連続動作させると、時間経過に伴って累積されるため、動作時間が長くなるほどずれ量が大きくなる傾向にある。例えば、演算部３１Ａ〜３１Ｃの処理時間のずれ量の変化に応じて、多数決処理部３２の待機期間を伸縮調整し得るような構成を組んだ場合、演算部３１Ａ〜３１Ｃの処理時間のずれ量が大きくなった分、多数決処理部３２の待機期間を長期化させることになる。多数決処理部３２の待機期間は、システムとしての機能が停止する期間でもあるため、待機期間の長期化は、システム機能の停止期間の長期化を意味し、並列同時処理としての性能を低下させることに繋がる。
【００２６】
次に、本発明にかかる冗長演算システムの実施形態について、図１を参照しながら説明する。
【００２７】
図１は、本発明にかかる冗長演算システムの一実施の形態を示し、この冗長演算システム１は、大別して、並列処理を行う３つの演算部２Ａ〜２Ｃと、演算部２Ａ〜２Ｃの処理結果の多数決を取り、一致数が多い処理結果のみを外部機器４に出力する多数決処理部３とを備える。
【００２８】
次に、演算部２Ａ〜２Ｃの詳細な構成について説明する。尚、演算部２Ａ〜２Ｃは、同様の構成を有するため、ここでは、演算部２Ａを例にとって説明する。
【００２９】
演算部２Ａは、演算部２Ａ〜２Ｃ間で同期する動作クロック（位相同期クロック）ＰＳＣ１を生成するクロック生成回路５Ａと、演算処理を実行するＭＰＵ（演算プロセッサ）６Ａと、外部機器４からの割込要求ＩＲに応じ、ＭＰＵ６Ａの割込処理の開始タイミングを制御する割込制御回路７Ａと、ＭＰＵ６Ａと他の演算部２Ｂ、２ＣのＭＰＵ６Ｂ、６Ｃとの割込処理を同期化させるタイミング制御回路８Ａとを備える。
【００３０】
クロック生成回路５Ａは、図２に示すように、周波数Ｆの原振クロックＯＣ１を発生する水晶発振器１１Ａと、水晶発振器１１Ａの原振クロックＯＣ１をカウントしてカウント値ＣＴ１を出力するとともに、カウント値ＣＴ１に対応するカウント終了フラグＣＦ１を出力するカウンタ１２Ａと、カウンタ１２Ａのカウント値ＣＴ１に基づいて位相同期クロックＰＳＣ１を生成するクロック出力回路１３Ａと、カウンタ１２Ａのカウント終了フラグＣＦ１と他の演算部２Ｂ、２Ｃのカウンタ１２Ｂ、１２Ｃのカウント終了フラグＣＦ２、ＣＦ３とを比較し、比較結果に応じて位相同期クロックＰＳＣ１の周期を縮小補正するクロック補正回路１４Ａとを備える。尚、このクロック生成回路５Ａは、特開２００８−１７６５７８号公報に記載のクロック生成回路と実質的に同様のものである。
【００３１】
カウンタ１２Ａは、水晶発振器１１Ａの原振クロックＯＣ１を継続的にカウントし、１〜Ｎ（Ｎは４以上の偶数）のカウント値ＣＴ１を出力する。また、カウント値ＣＴ１が「Ｎ−４」（Ｎから所定数ｋを減算した値であり、ｋは、Ｎよりも小さく、かつ、２以上の整数である）のときに「１」となり、カウント値ＣＴ１がカウント最大値Ｎのときに「０」となるカウント終了フラグＣＦ１を出力する。
【００３２】
さらに、カウンタ１２Ａは、カウント値ＣＴ１が「Ｎ−４」となるタイミングで、クロック補正回路１４Ａから受信するｍ（ｍは、演算部２Ａ〜２Ｃの数（ここでは「３」）ビットのカウント制御信号ＣＣ１を参照する。尚、カウント制御信号ＣＣ１については後に詳述する。
【００３３】
そして、受信したカウント制御信号ＣＣ１の３ビットのうち、「１」の値を取るビットの数が２以上（（ｍ−１）以上）であれば、カウント値ＣＴ１を２カウント分だけアップさせて「Ｎ−２」とし（１カウント分スキップさせる）、それ以外の場合には、カウント値ＣＴ１を１カウント分だけアップさせて「Ｎ−３」とする（通常にインクリメントさせる）。
【００３４】
クロック出力回路１３Ａは、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ／２」に達したときに「０」（Lowレベル）となり、カウント値ＣＴ１が「Ｎ」に達したときに「１」（Hiレベル）となるクロック信号を生成し、位相同期クロックＰＳＣ１として出力する。このため、位相同期クロックＰＳＣ１は、Ｆ／Ｎの周波数を有することになる。
【００３５】
クロック補正回路１４Ａは、クロック生成回路５Ａのカウンタ１２Ａから出力されるカウント終了フラグＣＦ１と、他のクロック生成回路５Ｂ、５Ｃのカウンタ１２Ｂ、１２Ｃから出力されるカウント終了フラグＣＦ２、ＣＦ３とを取り込み、ｍビットのフラグ列ＦＡ１を生成する。
【００３６】
このフラグ列ＦＡ１は、カウンタ１２Ａ〜１２Ｃのカウント終了フラグＣＦ１〜ＣＦ３を順に配列したものであり、１ビット目が演算部２Ａのカウンタ１２Ａのカウント終了フラグＣＦ１に対応し、２ビット目、３ビット目が他の演算部２Ｂ、２Ｃのカウンタ１２Ｂ、１２Ｃのカウント終了フラグＣＦ２、ＣＦ３に対応する。このため、例えば、演算部２Ａのカウンタ１２Ａのカウント終了フラグＣＦ１が「１」で、演算部２Ｂ、２Ｃのカウンタ１２Ｂ、１２Ｃのカウント終了フラグＣＦ２、ＣＦ３が「０」であれば、フラグ列ＦＡ１の値は「１００」となる。
【００３７】
クロック補正回路１４Ａでは、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ／２」のときに、カウント終了フラグＣＦ１〜ＣＦ３をラッチし、フラグ列ＦＡ１を第１の状態値ＦＳ１として保持する。また、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ−２」のときに、カウント終了フラグＣＦ１〜ＣＦ３をラッチするとともに、ラッチしたフラグ列ＦＡ１をビット反転し（以下、フラグ列ＦＡをビット反転したものを「反転フラグ列ＩＦＡ」という）、第２の状態値ＳＳ１として保持する。
【００３８】
さらに、クロック補正回路１４Ａは、入力されるカウント終了フラグＣＦ１〜ＣＦ３と、保持している第１の状態値ＦＳ１と、保持している第２の状態値ＳＳ１との論理和を取得し、ｍビットのカウント制御信号ＣＣ１として出力する。
【００３９】
この論理和演算は、図３に示すように、ビット毎に行い、例えば、カウント終了フラグＣＦ２が「１」で、第１及び第２の状態値ＦＳ１、ＳＳ１の２ビット目の値が「０」であれば、カウント制御信号ＣＣ１の２ビット目の値は「１」となる。尚、第２の状態値ＳＳ１は、カウント値ＣＴ１が「Ｎ−２」の際に保持されるものであることから、論理和演算に使用される第２の状態値ＳＳ１は、前サイクルにおけるものということになる。
【００４０】
図１に戻り、割込制御回路７Ａは、演算部２Ａの割込処理の開始タイミングを制御するために備えられ、クロック生成回路５Ａの位相同期クロックＰＳＣに同期して動作する。この割込制御回路７Ａは、外部機器４から出力される割込要求ＩＲを検知するとともに、割込要求ＩＲを検知した際に割込検知信号ＩＤ１を生成してタイミング制御回路８Ａに出力する。尚、外部機器４からの割込要求ＩＲは、外部機器４の動作タイミングに従って出力されることから、演算部２Ａの内部クロック（位相同期クロックＰＳＣ）と非同期になる。
【００４１】
また、割込制御回路７Ａは、タイミング制御回路８Ａからの一致判定値ＤＳ１に基づいて、ＭＰＵ６Ａの割込処理の開始タイミングを決定する割込開始信号ＩＳ１を生成し、ＭＰＵ６Ａに出力する。
【００４２】
タイミング制御回路８Ａは、演算部２Ａの割込制御回路７Ａから出力される割込検知信号ＩＤ１と、他の演算部２Ｂ、２Ｃの割込制御回路７Ｂ、７Ｃから出力される割込検知信号ＩＤ２、ＩＤ３とを取り込み、割込検知信号ＩＤ１〜ＩＤ３の値が一致するか否かを示す一致判定値ＤＳ１を生成する。
【００４３】
次に、上記構成を有する冗長演算システム１の動作について、位相同期クロックＰＳＣ１〜ＰＳＣ３の生成方法と、演算部２Ａ〜２Ｃの割込処理の同期化方法とに分けて説明する。
【００４４】
ここでは、先ず、位相同期クロックＰＳＣ１〜ＰＳＣ３を生成するにあたっての一連の処理の流れについて、図２〜図４を参照しながら説明する。尚、この動作は、演算部２Ａ〜２Ｃの全てで共通したものとなるため、ここでは、演算部２Ａを例にとって説明する。また、説明の便宜上、カウンタ１２のカウント値ＣＴの２サイクル分の処理を対象にして動作説明を行う。
【００４５】
図４に示すように、電源を投入すると、カウンタ１２Ａにおいて、カウント終了フラグＣＦ１を「０」にリセットする（ステップＳ１）。その後、１サイクル目のカウント処理を開始し、カウント値ＣＴ１を１ずつ順にインクリメントする（ステップＳ２、Ｓ３）。
【００４６】
そして、カウント値ＣＴ１が「Ｎ／２」に達した段階で（ステップＳ４）、クロック補正回路１４Ａにおいて、演算部２Ａ〜２Ｃのカウンタ１２Ａ〜１２Ｃから出力されるカウント終了フラグＣＦ１〜ＣＦ３（フラグ列ＦＡ１）をラッチし、第１の状態値ＦＳ１として保持する（ステップＳ５）。この際、演算部２Ａ〜２Ｃの全てが正常に動作していれば、フラグ列ＦＡ１は「０００」となり、第１の状態値ＦＳ１も「０００」となる。
【００４７】
これに対し、演算部２Ａ〜２Ｃの何れかに異常が生じていれば、フラグ列ＦＡ１の３ビットの値のうち、異常が生じている演算部２に対応するビットの値が「１」となる（例えば、演算部２Ｂのカウンタ１２Ｂが故障して機能を停止しており、カウント終了フラグＣＦ２がリセットされない場合や、カウント終了フラグＣＦ２が「１」となった後に、カウンタ１２Ｂが故障して計数動作を停止してしまった場合に、フラグ列ＦＡ１が「０１０」となる）。
【００４８】
また、上記の処理と併行して、クロック出力回路１３Ａにおいて、位相同期クロックＰＳＣ１のレベルを「０」とする（Lowレベルに立ち下げる）（ステップＳ６）。
【００４９】
次に、カウンタ１２Ａにおいて、カウント値ＣＴ１が「Ｎ−４」に達するのに応答して、カウント終了フラグＣＦ１の値を「１」に切り換える（ステップＳ７、Ｓ８）。その後、カウント値ＣＴ１を１ずつ順にインクリメントし、カウント最大値「Ｎ」までカウント処理を進める（ステップＳ９〜Ｓ１２）。
【００５０】
また、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ−４」に達したときには（ステップＳ７）、カウンタ１２Ａにおいて、カウント終了フラグＣＦ１〜ＣＦ３、第１の状態値ＦＳ１及び第２の状態値ＳＳ１の論理和を参照し、論理和演算値に応じた処理を行う（ステップＳ１４、Ｓ１５）。尚、これらの処理については、後に詳述する。
【００５１】
さらに、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ−２」に達したときには（ステップＳ１０）、クロック補正回路１４Ａにおいて、演算部２Ａ〜２Ｃのカウンタ１２Ａ〜１２Ｃから出力されるカウント終了フラグＣＦ１〜ＣＦ３の反転値（反転フラグ列ＩＦＡ１）をラッチし、第２の状態値ＳＳ１として保持する（ステップＳ１５）。
【００５２】
そして、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ」に達すると（ステップＳ１２）、カウンタ１２Ａにおいて、カウント終了フラグＣＦ１を「０」にリセットするとともに（ステップＳ１６）、クロック出力回路１３Ａにおいて、位相同期クロックＰＳＣ１のレベルを「１」とする（Hiレベルに立ち上げる）（ステップＳ１７）。
【００５３】
その後、処理をステップＳ２に戻って２サイクル目の処理を開始し、上記と同様にして、ステップＳ２〜Ｓ７の処理を実行する。
【００５４】
カウンタ１２Ａのカウント値ＣＴ１が「Ｎ−４」に達すると（ステップＳ７）、カウンタ１２Ａにおいて、クロック補正回路１４Ａから出力されるカウント制御信号ＣＣ１の値を参照し、「１」の値を有するビット数が２以上であるか否かを判定する（ステップＳ１３）。この際に参照するカウント制御信号ＣＣ１は、カウント終了フラグＣＦ１〜ＣＦ３と、２サイクル目のステップＳ５でラッチした第１の状態値ＦＳ１と、１サイクル目のステップＳ１５でラッチした第２の状態値ＳＳ１とを対象とした論理和演算によって得たものである。
【００５５】
例えば、演算部２Ａ〜２Ｃのカウンタ１２Ａ〜１２Ｃのカウント値ＣＴ１〜ＣＴ３の進み具合が揃っている場合であれば、１サイクル目のステップＳ１０において（演算部２Ａのカウンタ１２Ａのカウント値ＣＴ１が「Ｎ−２」に達したとき）、演算部２Ｂ、２Ｃのカウンタ１２Ｂ、１２Ｃから出力されるカウント終了フラグＣＦ２、ＣＦ３の値が「１」となるため、第２の状態値ＳＳ１としては「０００」が保持されている。
【００５６】
この際、演算部２Ａ〜２Ｃの全てに異常がなく、第１の状態値ＦＳ１が「０００」となっており、また、上記の取り込んだカウント終了フラグＣＦ１〜ＣＦ３の値の何れも「０」であれば、カウント制御信号ＣＣ１の１ビット目〜３ビット目の値（図３参照）は、何れも「０」となり、「１」の値を有するビット数が２未満となる（ステップＳ１３：Ｎ）。
【００５７】
尚、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ−４」に達するタイミングでは、カウント終了フラグＣＦ１の値を「１」に切り換える処理も行っているが（ステップＳ８）、この処理は、ステップＳ１３の処理と同時に行うため、ステップＳ１３で参照するカウント制御信号ＣＣ１は、ステップＳ８のカウント終了フラグＣＦ１＝「１」が反映されていないものとなる。
【００５８】
そして、ステップＳ１３の判定の結果、「１」の値を有するビット数が２未満であった場合は（ステップＳ１３：Ｎ）、カウンタ１２Ａのカウント値ＣＴ１を調整することなく、原振クロックＯＣ１の立ち上がりに応答して、カウント値ＣＴ１を「Ｎ−３」にインクリメントさせる（ステップＳ９）。
【００５９】
これに対し、例えば、演算部２Ｂ、２Ｃのカウンタ１２Ｂ、１２Ｃのカウント処理が、演算部２Ａのカウンタ１２Ａに比して進んでいる場合には、１サイクル目のステップＳ１０でラッチされる第２の状態値ＳＳ１が「０１１」であったり、或いは、２サイクル目のステップＳ１３で取り込むカウント終了フラグＣＦ２、ＣＦ３の値が「１」となる。その結果、論理和演算によって得られるカウント制御信号ＣＣ１において、「１」の値を有するビット数が２以上となる（ステップＳ１３：Ｙ）。
【００６０】
この場合は、カウンタ１２Ａのカウント値ＣＴ１を１カウント分スキップさせ（ステップＳ１４）、原振クロックＯＣ１の立ち上がりに応答して、カウント値ＣＴ１を「Ｎ−２」に移行させる（ステップＳ１０）。
【００６１】
こうして、カウンタ１２Ａのカウント値ＣＴ１がカウント最大値「Ｎ」に達するまでの期間を１カウント分だけ短くし、位相同期クロックＰＳＣ１のLowレベル期間を短縮する。これにより、演算部２Ａのクロック出力回路１３Ａから出力される位相同期クロックＰＳＣ１の位相を進め、他の演算部２Ｂ、２Ｃのクロック出力回路１３Ｂ、１３Ｃから出力される位相同期クロックＰＳＣ２、ＰＳＣ３に対する遅れ分を減少させる。
【００６２】
次に、位相同期クロックＰＳＣ１〜ＰＳＣ３の生成例について、（１）水晶発振器の個体差による周波数ずれが生じている場合と、（２）水晶発振器の故障により原振クロックの周波数が低下した場合とに分けて説明する。
【００６３】
ここでは、先ず、水晶発振器の個体差による周波数ずれが生じている場合について、図５を中心に参照しながら説明する。尚、図５には、カウント値ＣＴ１〜ＣＴ３のカウント最大値Ｎを「１６」とした場合を示している。
【００６４】
図５のタイミングｔ１は、１サイクル目において、演算部２Ｃのカウンタ１２Ｃのカウント値ＣＴ３が「１２」（Ｎ−４）となる時点である。このとき、図示のように、カウンタ１２Ｃのカウント値ＣＴ３が、他の演算部２Ａ、２Ｂのカウンタ１２Ａ、１２Ｂのカウント値ＣＴ１、ＣＴ２よりも遅れていると、カウンタ１２Ｃのカウント終了フラグＣＦ３が立ち上がる前に、他のカウンタ１２Ａ、１２Ｂのカウント終了フラグＣＦ１、ＣＦ２が立ち上がる状態となる。
【００６５】
その結果、演算部２Ｃのクロック補正回路１４Ｃの論理和演算値（カウント制御信号ＣＣ３）は、「１１０」となる。このときのカウント制御信号ＣＣ３の値は、カウント終了フラグＣＦ１〜ＣＦ３を順に配列したもの（但し、図４のステップＳ８のカウント終了フラグＣＦ３＝１が反映されていないもの）と同値になるため、カウント制御信号ＣＣ３の値を参照することは、カウント終了フラグＣＦ１〜ＣＦ３を比較（カウンタ１２Ａ〜１２Ｃのカウント値ＣＴ１〜ＣＴ３を比較）することと同義になる。
【００６６】
そして、カウント制御信号ＣＣ３の「１１０」は、演算部２Ｃのカウンタ１２Ｃのカウント値ＣＴ３の進み具合が遅れている旨を示すことになり、カウンタ１２Ｃのカウント値ＣＴ３が「１２」から「１４」にスキップされる。これにより、位相同期クロックＰＳＣ３のLowレベル期間が短縮され、タイミングｔ２に示すように、位相同期クロックＰＳＣ３の立ち上がりタイミングが早められる。
【００６７】
タイミングｔ２での調整の結果、今度は、演算部２Ｂの位相同期クロックＰＳＣ２が、他の演算部２Ａ、２Ｃの位相同期クロックＰＳＣ１、ＰＳＣ３よりも遅れるようになると、演算部２Ｂのカウンタ１２Ｂのカウント値ＣＴ２が「１２」となるタイミングｔ３において、カウンタ１２Ｂのカウント値ＣＴ２が「１２」から「１４」にスキップされる。これにより、タイミングｔ４において、位相同期クロックＰＳＣ２の立ち上がりタイミングが早められ、位相同期クロックＰＳＣ１〜ＰＳＣ３での位相のずれが抑制される。
【００６８】
また、図５のタイミングｔ５〜ｔ８においても、上記と同様にして、カウンタ１２のカウント値ＣＴが調整され、位相同期クロックＰＳＣの立ち上がりタイミングが補正される。
【００６９】
上記の位相補正を行う際、位相が補正される位相同期クロックＰＳＣは、そのLowレベルの期間が原振クロックＯＣの１クロック分だけ短くなるため、位相補正後の位相同期クロックＰＳＣ１〜ＰＳＣ３の三者間の位相ずれは、原振クロックＯＣの２クロック分の範囲となる（位相同期クロックＰＳＣ１〜ＰＳＣ３の何れかを基準とした場合に、他の２つの位相同期クロックＰＳＣの位相が、基準とした位相同期クロックＰＳＣの位相に対して、＋１クロックから−１クロックまでの範囲内でずれる）。このため、補正の結果、得られる位相同期クロックＰＳＣ１〜ＰＳＣ３は、以下の式を用いて表すことができる。
【００７０】
周波数＝原振クロックの周波数×カウント値Ｎ  （誤差：＋０％、−１００／Ｎ％）
位相ずれ時間＝原振クロックの２クロック分（２／Ｆ）以下
【００７１】
上記の２式より、高い精度の位相同期クロックＰＳＣ１〜ＰＳＣ３を必要とする場合、カウント最大値Ｎを大きな値とすることで、位相同期クロックＰＳＣ１〜ＰＳＣ３の周波数精度を上げることができ、また、原振クロックＯＣ１〜ＯＣ３の周波数を高くすることで、位相ずれ時間を小さくできることが分かる。すなわち、カウンタ１２Ａ〜１２Ｃのカウント最大値Ｎを大きくして位相同期クロックＰＳＣ１〜ＰＳＣ３の周期を長くしつつ、原振クロックＯＣ１〜ＯＣ３の周波数を高くして、位相同期クロックＰＳＣ１〜ＰＳＣ３の周期を調整する際の調整幅（カウンタ１２Ａ〜１２Ｃの１カウント分の期間）を細かくすれば、精度良く位相同期クロックＰＳＣ１〜ＰＳＣ３を同期化することができる。
【００７２】
次に、水晶発振器の故障により原振クロックの周波数が低下した場合について、図６を中心に参照しながら説明する。尚、図６においても、カウント値ＣＴ１〜ＣＴ３のカウント最大値Ｎを「１６」とした場合を示している。また、同図では、演算部２Ｃの水晶発振器１１Ｃが故障し、原振クロックＯＣ３の周波数がタイミングｔ１１で低下する場合を例示している。
【００７３】
タイミングｔ１１において、原振クロックＯＣ３の周波数が低下すると、それに伴って、演算部２Ｃのカウンタ１２Ｃのカウント処理の進み具合も遅れるようになる。このため、タイミングｔ１２において、演算部２Ａ、２Ｂのカウンタ１２Ａ、１２Ｂから出力されるカウント終了フラグＣＦ１、ＣＦ２の双方が「１」となっても、演算部２Ｃのカウンタ１２Ｃから出力されるカウント終了フラグＣＦ３は、依然として「０」の値を維持したままとなる。
【００７４】
その結果、演算部２Ｂのカウンタ１２Ｂのカウント値ＣＴ２が「１４」（Ｎ−２）となるタイミングｔ１３において、演算部２Ｂのクロック補正回路１４Ｂが、第２の状態値ＳＳ２として「００１」を保持する。また、演算部２Ａのカウンタ１２Ａのカウント値ＣＴ１が「１４」（Ｎ−２）となるタイミング（タイミングｔ１３からやや遅れたタイミング）で、演算部２Ａのクロック補正回路１４Ａが、第２の状態値ＳＳ２として「００１」を保持する。ここで、第２の状態値ＳＳ２の値「００１」は、演算部２Ｃに異常が発生したことを示している。
【００７５】
そして、演算部２Ｂのカウンタ１２Ｂのカウント値ＣＴ２が「１２」（Ｎ−４）になるタイミングｔ１４において、第１の状態値ＦＳ１と、カウント終了フラグＣＦ１〜ＣＦ３と、第２の状態値ＳＳ１との論理和が参照される（図４のステップＳ１３）。このとき、図６に示すように、カウンタ１２Ｂのカウント値ＣＴ２が演算部２Ａのカウンタ１２Ａのカウント値ＣＴ１よりも遅れている状態であれば、演算部２Ｂのクロック補正回路１４Ｂでの第１の状態値ＦＳ２、カウント終了フラグＣＦ１〜ＣＦ３、第２の状態値ＳＳ２は、表１に示す通りとなる。
【００７６】
【表１】
2011248809.tif 000003
【００７７】
このため、この時点でのクロック補正回路１４Ｂのカウント制御信号ＣＣ２は、「１０１」となり、図４のステップＳ１３の判定処理において、「２ビット以上が「１」を有する」場合に該当することになる。その結果、演算部２Ｂのカウンタ１２Ｂのカウント値ＣＴ２が「１２」から「１４」にスキップされ、タイミングｔ１５において、位相同期クロックＰＳＣ２の立ち上がりタイミングが早められる。
【００７８】
このように、演算部２Ａ〜２Ｃのうちの１つの異常が発生しても、残りの演算部２の二者間で、カウント値ＣＴの遅れを検知して位相同期クロックＰＳＣの周期を縮小補正することができる。
【００７９】
次に、演算部２Ａ〜２Ｃの割込処理の同期化方法について、図１〜図８を参照しながら説明する。
【００８０】
ここでは、先ず、割込処理の同期化にあたっての一連の処理の流れについて、図１及び図７を参照しながら説明する。尚、以下に説明する動作は、演算部２Ａ〜２Ｃの全てで共通したものとなるため、演算部２Ａを例にとって説明する。
【００８１】
割込処理の同期化にあたっては、図７に示すように、割込制御回路７Ａにおいて、位相同期クロックＰＳＣ１（演算部２Ａの内部動作クロック）に同期して、外部機器４からの割込要求ＩＲを監視する（ステップＳ２１）。そして、外部機器４からの割込要求ＩＲを検知すると（ステップＳ２１：Ｙ）、位相同期クロックＰＳＣ１に同期した割込検知信号ＩＤ１を出力し（ステップＳ２２）、割込入力の状態となる（ステップＳ２３）。
【００８２】
次いで、タイミング制御回路８Ａにおいて、割込制御回路７Ａからの割込検知信号ＩＤ１と、他の演算部２Ｂ、２Ｃの割込制御回路７Ｂ、７Ｃからの割込検知信号ＩＤ２、ＩＤ３とを取り込み、三者ＩＤ１〜ＩＤ３の値が一致するか否かを示す一致判定値ＤＳ１を割込制御回路７Ａに出力する（ステップＳ２４）。
【００８３】
次に、割込制御回路７Ａにおいて、タイミング制御回路８Ａからの一致判定値ＤＳ１を参照し、割込検知信号ＩＤ１〜ＩＤ３の値が一致するか否かを判定する（ステップＳ２５）。その結果、割込検知信号ＩＤ１〜ＩＤ３の値が一致していた場合（割込検知信号ＩＤ１〜ＩＤ３の全ての値が「１」であった場合）には、割込開始信号ＩＳ１をＭＰＵ６Ａに出力し、割込処理を開始させる（ステップＳ２６）。
【００８４】
一方、割込検知信号ＩＤ１〜ＩＤ３の値が一致しなかった場合（割込検知信号ＩＤ２、ＩＤ３の少なくとも一方の値が「０」であった場合）には、不一致待ち状態に移行し（ステップＳ２７）、位相同期クロックＰＳＣ１の１クロック分だけ割込開始信号ＩＳ１の出力を待機する（ステップＳ２７）。
【００８５】
次に、図７に示す処理の下での動作例について、図８を参照しながら説明する。
【００８６】
割込要求ＩＲは、外部機器４の動作タイミングに従って出力されるものであるのに対し、位相同期クロックＰＳＣ１〜ＰＳＣ３は、演算部２Ａ〜２Ｃの内部で生成されるものであるため、割込要求ＩＲと位相同期クロックＰＳＣ１〜ＰＳＣ３とは非同期の関係となる。また、位相同期クロックＰＳＣ１〜ＰＳＣ３は、図４〜図６に示す処理により、ずれ量が縮小補正されているものの、完全に同期にしているわけではなく、位相に微小なずれがある（図５のＰＳＣ１〜ＰＳＣ３を参照）。
【００８７】
このため、例えば、タイミングｔ２１に示すように、演算部２Ｃの位相同期クロックＰＳＣ３が「１」（Hiレベル）に立ち上がってから他の演算部２Ａ、２Ｂの位相同期クロックＰＳＣ１、ＰＳＣ２が「１」に立ち上がるまでの間に、割込要求ＩＲがなされると、演算部２Ａ〜２Ｃの間で、割込要求ＩＲの検知タイミングに、位相同期クロックＰＳＣ１〜ＰＳＣ３の１クロック分の誤差が生じる。
【００８８】
こうした１クロック分の誤差が生じた場合、タイミングｔ２２、ｔ２３において、演算部２Ａ、２Ｂの割込制御回路７Ａ、７Ｂが、位相同期クロックＰＳＣ１、ＰＳＣ２の立ち上がりに応答して、外部機器４の割込要求ＩＲを検知し、割込検知信号ＩＤ１、ＩＤ２を出力する一方で、演算部２Ｃの割込制御回路７Ｃでは、割込要求ＩＲを検知することができず、割込制御回路７Ｃの割込検知信号ＩＤ３を出力しない。
【００８９】
その後、演算部２Ａ、２Ｂの位相同期クロックＰＳＣ１、ＰＳＣ２の次の立ち上がり（タイミングｔ２５、ｔ２６）において、割込制御回路７Ａ、７Ｂが、各々、割込検知信号ＩＤ１〜ＩＤ３の一致判定を行うが、先のタイミングｔ２２、ｔ２３で割込制御回路７Ｃの割込検知信号ＩＤ３が出力されていないことから、割込検知信号ＩＤ１〜ＩＤ３の値が一致しない。そのため、演算部２Ａ、２Ｂの割込制御回路７Ａ、７Ｂは、割込開始信号ＩＳ１の出力を待機し、位相同期クロックＰＳＣ１、ＰＳＣ２の１クロック分の期間が経過した後のタイミングｔ２８、ｔ２９で、割込開始信号ＩＳ１、ＩＳ２をＭＰＵ６Ａ、６Ｂに出力する。
【００９０】
その一方で、演算部２Ｃの位相同期クロックＰＳＣ３が立ち上がるタイミングｔ２４では、割込制御回路７Ｃが、他の割込制御回路７Ａ、７Ｂから遅れて、外部機器４の割込要求ＩＲを検知し、割込検知信号ＩＤ３を出力する。そして、位相同期クロックＰＳＣ３の次の立ち上がりとなるタイミングｔ２７において、演算部２Ｃの割込制御回路７Ｃが、割込検知信号ＩＤ１〜ＩＤ３の一致判定を行う。このとき、割込検知信号ＩＤ１〜ＩＤ３は、何れも「１」となっているため、割込制御回路７Ｃは、待機処理を経ることなく、割込開始信号ＩＳ３をＭＰＵ６Ｃに出力する。
【００９１】
以上のように、本実施の形態によれば、クロック生成回路５Ａ〜５Ｃにより、演算部２Ａ〜２Ｃの間で位相ずれ量を縮小補正した動作クロック（位相同期クロック）ＰＳＣ１〜ＰＳＣ３を生成することができる。そして、外部機器４からの割込要求ＩＲを受け付けるに際しては、上記の位相同期クロックＰＳＣ１〜ＰＳＣ３に同期して割込要求ＩＲを検知するため、演算部２Ａ〜２Ｃの間で、大きなずれを伴うことなく、割込要求ＩＲを検知することができる。
【００９２】
但し、その場合でも、割込要求ＩＲの入力タイミングによっては、演算部２Ａ〜２Ｃの間で、割込要求ＩＲの検知タイミングにずれが生じる場合があるが、割込制御回路７Ａ〜７Ｃにおいて、割込要求ＩＲを先行して検知した割込制御回路７が、位相同期クロックＰＳＣの１クロック分だけ待って割込開始信号ＩＳを出力するため、ＭＰＵ６Ａ〜６Ｃに同一処理ステップ時に割込入力することができる。
【００９３】
以上、本発明の実施の形態を説明したが、本発明は、上記構成に限定されるものではなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能である。
【００９４】
例えば、上記実施の形態においては、３つの演算部２Ａ〜２Ｃを有する場合を例示したが、演算部２の数は、これに限定されるものではなく、２であってよいし、或いは、４以上であってもよい。
【００９５】
また、上記実施の形態では、カウンタ１２Ａにおいて、カウント値ＣＴ１が「Ｎ−４」のときに、カウント終了フラグＣＦ１の値を「１」とし、カウント値ＣＴ１がカウント最大値Ｎのときに、カウント終了フラグＣＦ１の値を「０」としているが、「１」と「０」の割り当ては逆であってよい。このことは、クロック出力回路１３Ａの動作クロックにおいても同様であり、カウンタ１２Ａのカウント値ＣＴ１が「Ｎ／２」に達したときに「１」（Hiレベル）とし、「Ｎ」に達したときに「０」（Lowレベル）としてもよい。
【符号の説明】
【００９６】
１  冗長演算システム
２（２Ａ〜２Ｃ）  演算部
３  多数決処理部
４  外部機器
５（５Ａ〜５Ｃ）  クロック生成回路
６（６Ａ〜６Ｃ）  ＭＰＵ
７（７Ａ〜７Ｃ）  割込制御回路
８（８Ａ〜８Ｃ）  タイミング制御回路
１１（１１Ａ〜１１Ｃ）  水晶発振器
１２（１２Ａ〜１２Ｃ）  カウンタ
１３（１３Ａ〜１３Ｃ）  クロック出力回路
１４（１４Ａ〜１４Ｃ）  クロック補正回路
３０  冗長演算システム
３１（３１Ａ〜３１Ｃ）  演算部
３２  多数決処理部
３３（３３Ａ〜３３Ｃ）  水晶発振器
３４（３４Ａ〜３４Ｃ）  クロック生成回路
３５  外部機器
ＩＲ  割込要求
ＰＳＣ（ＰＳＣ１〜ＰＳＣ３）  位相同期クロック
ＩＤ（ＩＤ１〜ＩＤ３）  割込検知信号
ＩＳ（ＩＳ１〜ＩＳ３）  割込開始信号
ＤＳ（ＤＳ１〜ＤＳ３）  一致判定値
ＯＣ（ＯＣ１〜ＯＣ３）  原振クロック
ＣＴ（ＣＴ１〜ＣＴ３）  カウント値
ＣＦ（ＣＦ１〜ＣＦ３）  カウント終了フラグ
ＦＡ（ＦＡ１〜ＦＡ３）  フラグ列
ＩＦＡ（ＩＦＡ１〜ＩＦＡ３）  反転フラグ列
ＦＳ（ＦＳ１〜ＦＳ３）  第１の状態値
ＳＳ（ＳＳ１〜ＳＳ３）  第２の状態値
ＣＣ（ＣＣ１〜ＣＣ３）  カウント制御信号
【図１】
2011248809.tif 000004
【図２】
2011248809.tif 000005
【図３】
2011248809.tif 000006
【図４】
2011248809.tif 000007
【図５】
2011248809.tif 000008
【図６】
2011248809.tif 000009
【図７】
2011248809.tif 000010
【図８】
2011248809.tif 000011
【図９】
2011248809.tif 000012
【図１０】
2011248809.tif 000013