説明

冗長演算システム

【課題】冗長化された演算部の割込処理を適切に同期化させる。
【解決手段】冗長演算システム1は、演算部2A〜2Cの各々が、原振クロックを出力する水晶発振器と、原振クロックのクロック数を計数するカウンタと、カウンタのカウント値に基づき、演算部2A〜2Cの位相同期クロックPSC1〜PSC3を生成するクロック出力回路と、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、その差分に応じて、自演算部の位相同期クロックPSCの周期を補正するクロック補正回路とを含むクロック生成回路と、位相同期クロックPSC1〜PSC3に同期して割込要求IRを検知するとともに、自演算部の検知結果と他の演算部の検知結果とを対比し、検知結果が一致したときに、自演算部のMPU6A〜6Cに割込開始信号IS1〜IS3を出力する割込制御回路7A〜7Cとを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の演算部を備えた冗長演算システムに関し、特に、割込処理を同期化させるのに適した冗長演算システムに関する。
【背景技術】
【0002】
プロセッサが冗長化された冗長演算システム(電子計算機システム)では、動作クロックが異なるプロセッサを用いた場合、多重化されたプロセッサに同期した割込を入力することができない。このため、複数のプロセッサの間で、動作するソフトウェアの割込処理を同期させることができない。
【0003】
そこで、例えば、特許文献1には、多重化されたプロセッサに対して外部から割込要求がなされたときに、各プロセッサでの割込処理の実行タイミングを制御し、割込処理を同期させる同期化システムが提案されている。
【0004】
この同期化システムは、図10に示すように、相手方のプロセッサとの間で内部動作状態を互いに通知するとともに、外部からの割込要求を保持する通信回路51と、自プロセッサの内部処理を一時的に停止させる処理停止回路52と、自プロセッサの処理結果を保持し、バス53への出力を一時停止するバス制御回路54と、自プロセッサの内部動作を監視し、通信回路51の通知内容に基づいてバス制御回路54及び処理停止回路52を起動する監視回路55とを、プライマリプロセッサ56及びセカンダリプロセッサ57の各々に備えるとともに、これらのプロセッサ56、57の間に、両者の同期状態を判定する同期化処理部58を備える。
【0005】
上記同期化システムでは、プライマリプロセッサ56とセカンダリプロセッサ57が動作する期間、両プロセッサ56、57が、通信回路51を通じて実行中の命令を相互に通知し合い、自身が相手方プロセッサと同じ命令を実行しているか否かを判定し続ける。その過程で、外部からの割込要求が発生し、その際、プライマリプロセッサ56とセカンダリプロセッサ57が異なる命令を実行していた場合には、監視回路55によって、プライマリプロセッサ56とセカンダリプロセッサ57のどちらの動作が先行するかを解析する。
【0006】
そして、先行する側のプロセッサにおいて、処理停止回路52によりプロセッサの内部処理を一時的に停止するとともに、バス53への処理結果の出力を停止する。その後、遅れる側のプロセッサの処理が先行プロセッサに追い付いた段階で、先行プロセッサの停止操作を解除し、これにより、同一タイミングで2つのプロセッサ56、57が割込処理を開始することを可能にする。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平8−6800号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1に記載の同期化システムでは、プロセッサの内部動作を相互に通知し合い、互いに監視し合うことで、割込処理を同期させるように構成されているが、プロセッサの内部動作を監視すること自体が困難であり、必ずしも現実的とは言えない。
【0009】
また、上記の同期化システムでは、プロセッサの内部動作を監視するための回路、バスへの信号出力タイミングを制御するためのバス制御回路、及び、内部処理を一時的に停止させる処理停止回路等の多数の回路が必要となるため、回路規模の大型化や製品コストの増大を招くという問題がある。
【0010】
さらに、上記の同期化システムでは、出力停止や処理停止が不可欠となり、性能低下や応答性能の低下を引き起こす。応答性能の低下は、リアルタイム性が要求される冗長演算システムでは軽視することができない。
【0011】
そこで、本発明は、上記従来の技術における問題点に鑑みてなされたものであって、複数の演算部を冗長化させた冗長化システムにおいて、外部からの割込要求を受けた際に、複数の演算部の割込処理を適切に同期化させることが可能な冗長演算システムを提供することを目的とする。
【課題を解決するための手段】
【0012】
上記目的を達成するため、本発明は、複数の演算部を備えた冗長構成を有し、外部からの割込要求に応じて該複数の演算部の各々が割込処理を行う冗長演算システムであって、前記複数の演算部の各々が、所定の原振クロックを出力する発振器と、前記原振クロックのクロック数を計数するカウンタと、該カウンタのカウント値に基づき、該演算部の動作クロックを生成するクロック出力回路と、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、その差分に応じて、自演算部の前記動作クロックの周期を補正する補正回路と、前記周期が補正された動作クロックに同期して前記割込要求を検知する検知回路と、自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とを対比し、それらの検知結果が一致したときに、自演算部の演算プロセッサに割込開始信号を出力する割込制御回路とを備えることを特徴とする。
【0013】
本発明によれば、カウンタ、クロック出力回路及び補正回路の構成により、演算部間での位相ずれ量を縮小補正した動作クロック(以下、「位相同期クロック」という)を生成することができる。そして、検知回路において、上記の位相同期クロックに同期して外部からの割込要求を検知するため、複数の演算部の間で、大きなずれを伴うことなく、割込要求を検知することができる。但し、その場合でも、割込要求の入力タイミングによっては、演算部の間で割込要求の検知タイミングにずれが生じる場合があるが、割込制御回路により、そのずれ分に応じて割込開始信号の出力タイミングを調整し、割込処理を同期化させることが可能になる。
【0014】
上記冗長演算システムにおいて、前記割込制御回路が、自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とが一致しないときに、前記周期が補正された動作クロックの1クロック分の期間に亘って前記割込開始信号の出力を待機し、その期間の経過後に、該割込開始信号を出力することができる。
【0015】
上記冗長演算システムにおいて、前記カウンタが、1からN(Nは4以上の偶数)までのカウント値で前記原振クロックを計数し、前記クロック出力回路が、前記カウンタのカウント値がN/2に達したときに、前記動作クロックのレベルをHi又はLowの一方とし、該カウンタのカウント値がNに達したときに、該動作クロックのレベルをHi又はLowの他方とすることで、前記動作クロックを生成し、前記補正回路が、前記カウンタのカウント値がN−k(kは、Nよりも小さく、かつ、2以上の整数)に達したときに、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、該自演算部のカウンタのカウント値が該他の演算部のカウンタのカウント値よりも遅れている場合に、該自演算部のカウンタのカウント値をスキップさせることができる。
【発明の効果】
【0016】
以上のように、本発明によれば、複数の演算部を冗長化させた冗長化システムにおいて、外部からの割込要求を受けた際に、複数の演算部の割込処理を適切に同期化させることが可能になる。
【図面の簡単な説明】
【0017】
【図1】本発明にかかる冗長演算システムの一実施の形態を示す構成図である。
【図2】図1のクロック生成回路を示す構成図である。
【図3】図2の補正回路で実行する論理和演算の方法を示す図である。
【図4】位相同期クロックの生成処理を示すフローチャートである。
【図5】図4に示す処理の下での動作例を示すタイミング図である。
【図6】図4に示す処理の下での動作例を示すタイミング図である。
【図7】割込処理の同期化処理を示すフローチャートである。
【図8】外部機器からの割込要求と演算部の位相同期クロックとの関係を示すタイミング図である。
【図9】冗長演算システムの基本構成を示す図である。
【図10】従来の割込処理の同期化システムの一例を示す構成図である。
【発明を実施するための形態】
【0018】
次に、発明を実施するための形態について、図面を参照しながら詳細に説明する。
【0019】
ここでは、本発明にかかる冗長演算システムの実施形態の説明に先立ち、プロセッサを多重化した冗長演算システムの基本構成について、図9を参照しながら簡単に説明する。
【0020】
図9は、複数の演算部を備えた冗長演算システムの構成例を示し、この冗長演算システム30は、並列処理を行う3つの演算部31A〜31Cと、演算部31A〜31Cの処理結果の多数決を取り、一致数が多い処理結果(正常な処理結果)のみを外部機器35に出力する多数決処理部32とを備える。
【0021】
上記冗長演算システム30によれば、演算部31A〜31Cのうちの1つに故障が生じても、正常に動作する他の演算部によって処理を継続することができる。また、故障が生じた演算部から異常な処理結果が出力される場合にも、それを多数決処理部32で遮断し、外部機器35に出力されるのを回避することができる。
【0022】
また、図9に示す冗長演算システム30では、演算部31A〜31Cの各々と1対1で対応し、水晶発振器33A〜33Cの出力に基づいて動作クロックCK1〜CK3を生成するクロック生成回路34A〜34Cが設けられる。この場合、演算部31Aの処理時間は、クロック生成回路34Aから出力される動作クロックCK1の周波数に依存し、また、演算部31B、31Cの処理時間も同様に、動作クロックCK2、CK3の周波数に依存する。
【0023】
しかし、クロック生成回路34A〜34Cの水晶発振器33A〜33Cには個体差があり、同一仕様のものであっても、水晶発振器33A〜33C間で原振クロックの周波数や位相に微小なずれが生じる。この原振クロックのずれは、動作クロックCK1〜CK3に反映されるため、演算部31A〜31Cの動作タイミングのずれを招き、結果的に演算部31A〜31Cを非同期で動作させることになる。
【0024】
そこで、冗長演算システム30では、多数決処理部32において、演算部31A〜31Cのうちの1つより処理結果を受信してから多数決処理を開始するまでの間に、一定の待機期間を設け、全ての演算部31A〜31Cの処理結果が出揃うのを待って処理を開始するようにしている。これにより、演算部31A〜31Cの処理時間のずれを打ち消し、システムの並列処理を可能としている。
【0025】
但し、演算部31A〜31Cの処理時間のずれは、システムを連続動作させると、時間経過に伴って累積されるため、動作時間が長くなるほどずれ量が大きくなる傾向にある。例えば、演算部31A〜31Cの処理時間のずれ量の変化に応じて、多数決処理部32の待機期間を伸縮調整し得るような構成を組んだ場合、演算部31A〜31Cの処理時間のずれ量が大きくなった分、多数決処理部32の待機期間を長期化させることになる。多数決処理部32の待機期間は、システムとしての機能が停止する期間でもあるため、待機期間の長期化は、システム機能の停止期間の長期化を意味し、並列同時処理としての性能を低下させることに繋がる。
【0026】
次に、本発明にかかる冗長演算システムの実施形態について、図1を参照しながら説明する。
【0027】
図1は、本発明にかかる冗長演算システムの一実施の形態を示し、この冗長演算システム1は、大別して、並列処理を行う3つの演算部2A〜2Cと、演算部2A〜2Cの処理結果の多数決を取り、一致数が多い処理結果のみを外部機器4に出力する多数決処理部3とを備える。
【0028】
次に、演算部2A〜2Cの詳細な構成について説明する。尚、演算部2A〜2Cは、同様の構成を有するため、ここでは、演算部2Aを例にとって説明する。
【0029】
演算部2Aは、演算部2A〜2C間で同期する動作クロック(位相同期クロック)PSC1を生成するクロック生成回路5Aと、演算処理を実行するMPU(演算プロセッサ)6Aと、外部機器4からの割込要求IRに応じ、MPU6Aの割込処理の開始タイミングを制御する割込制御回路7Aと、MPU6Aと他の演算部2B、2CのMPU6B、6Cとの割込処理を同期化させるタイミング制御回路8Aとを備える。
【0030】
クロック生成回路5Aは、図2に示すように、周波数Fの原振クロックOC1を発生する水晶発振器11Aと、水晶発振器11Aの原振クロックOC1をカウントしてカウント値CT1を出力するとともに、カウント値CT1に対応するカウント終了フラグCF1を出力するカウンタ12Aと、カウンタ12Aのカウント値CT1に基づいて位相同期クロックPSC1を生成するクロック出力回路13Aと、カウンタ12Aのカウント終了フラグCF1と他の演算部2B、2Cのカウンタ12B、12Cのカウント終了フラグCF2、CF3とを比較し、比較結果に応じて位相同期クロックPSC1の周期を縮小補正するクロック補正回路14Aとを備える。尚、このクロック生成回路5Aは、特開2008−176578号公報に記載のクロック生成回路と実質的に同様のものである。
【0031】
カウンタ12Aは、水晶発振器11Aの原振クロックOC1を継続的にカウントし、1〜N(Nは4以上の偶数)のカウント値CT1を出力する。また、カウント値CT1が「N−4」(Nから所定数kを減算した値であり、kは、Nよりも小さく、かつ、2以上の整数である)のときに「1」となり、カウント値CT1がカウント最大値Nのときに「0」となるカウント終了フラグCF1を出力する。
【0032】
さらに、カウンタ12Aは、カウント値CT1が「N−4」となるタイミングで、クロック補正回路14Aから受信するm(mは、演算部2A〜2Cの数(ここでは「3」)ビットのカウント制御信号CC1を参照する。尚、カウント制御信号CC1については後に詳述する。
【0033】
そして、受信したカウント制御信号CC1の3ビットのうち、「1」の値を取るビットの数が2以上((m−1)以上)であれば、カウント値CT1を2カウント分だけアップさせて「N−2」とし(1カウント分スキップさせる)、それ以外の場合には、カウント値CT1を1カウント分だけアップさせて「N−3」とする(通常にインクリメントさせる)。
【0034】
クロック出力回路13Aは、カウンタ12Aのカウント値CT1が「N/2」に達したときに「0」(Lowレベル)となり、カウント値CT1が「N」に達したときに「1」(Hiレベル)となるクロック信号を生成し、位相同期クロックPSC1として出力する。このため、位相同期クロックPSC1は、F/Nの周波数を有することになる。
【0035】
クロック補正回路14Aは、クロック生成回路5Aのカウンタ12Aから出力されるカウント終了フラグCF1と、他のクロック生成回路5B、5Cのカウンタ12B、12Cから出力されるカウント終了フラグCF2、CF3とを取り込み、mビットのフラグ列FA1を生成する。
【0036】
このフラグ列FA1は、カウンタ12A〜12Cのカウント終了フラグCF1〜CF3を順に配列したものであり、1ビット目が演算部2Aのカウンタ12Aのカウント終了フラグCF1に対応し、2ビット目、3ビット目が他の演算部2B、2Cのカウンタ12B、12Cのカウント終了フラグCF2、CF3に対応する。このため、例えば、演算部2Aのカウンタ12Aのカウント終了フラグCF1が「1」で、演算部2B、2Cのカウンタ12B、12Cのカウント終了フラグCF2、CF3が「0」であれば、フラグ列FA1の値は「100」となる。
【0037】
クロック補正回路14Aでは、カウンタ12Aのカウント値CT1が「N/2」のときに、カウント終了フラグCF1〜CF3をラッチし、フラグ列FA1を第1の状態値FS1として保持する。また、カウンタ12Aのカウント値CT1が「N−2」のときに、カウント終了フラグCF1〜CF3をラッチするとともに、ラッチしたフラグ列FA1をビット反転し(以下、フラグ列FAをビット反転したものを「反転フラグ列IFA」という)、第2の状態値SS1として保持する。
【0038】
さらに、クロック補正回路14Aは、入力されるカウント終了フラグCF1〜CF3と、保持している第1の状態値FS1と、保持している第2の状態値SS1との論理和を取得し、mビットのカウント制御信号CC1として出力する。
【0039】
この論理和演算は、図3に示すように、ビット毎に行い、例えば、カウント終了フラグCF2が「1」で、第1及び第2の状態値FS1、SS1の2ビット目の値が「0」であれば、カウント制御信号CC1の2ビット目の値は「1」となる。尚、第2の状態値SS1は、カウント値CT1が「N−2」の際に保持されるものであることから、論理和演算に使用される第2の状態値SS1は、前サイクルにおけるものということになる。
【0040】
図1に戻り、割込制御回路7Aは、演算部2Aの割込処理の開始タイミングを制御するために備えられ、クロック生成回路5Aの位相同期クロックPSCに同期して動作する。この割込制御回路7Aは、外部機器4から出力される割込要求IRを検知するとともに、割込要求IRを検知した際に割込検知信号ID1を生成してタイミング制御回路8Aに出力する。尚、外部機器4からの割込要求IRは、外部機器4の動作タイミングに従って出力されることから、演算部2Aの内部クロック(位相同期クロックPSC)と非同期になる。
【0041】
また、割込制御回路7Aは、タイミング制御回路8Aからの一致判定値DS1に基づいて、MPU6Aの割込処理の開始タイミングを決定する割込開始信号IS1を生成し、MPU6Aに出力する。
【0042】
タイミング制御回路8Aは、演算部2Aの割込制御回路7Aから出力される割込検知信号ID1と、他の演算部2B、2Cの割込制御回路7B、7Cから出力される割込検知信号ID2、ID3とを取り込み、割込検知信号ID1〜ID3の値が一致するか否かを示す一致判定値DS1を生成する。
【0043】
次に、上記構成を有する冗長演算システム1の動作について、位相同期クロックPSC1〜PSC3の生成方法と、演算部2A〜2Cの割込処理の同期化方法とに分けて説明する。
【0044】
ここでは、先ず、位相同期クロックPSC1〜PSC3を生成するにあたっての一連の処理の流れについて、図2〜図4を参照しながら説明する。尚、この動作は、演算部2A〜2Cの全てで共通したものとなるため、ここでは、演算部2Aを例にとって説明する。また、説明の便宜上、カウンタ12のカウント値CTの2サイクル分の処理を対象にして動作説明を行う。
【0045】
図4に示すように、電源を投入すると、カウンタ12Aにおいて、カウント終了フラグCF1を「0」にリセットする(ステップS1)。その後、1サイクル目のカウント処理を開始し、カウント値CT1を1ずつ順にインクリメントする(ステップS2、S3)。
【0046】
そして、カウント値CT1が「N/2」に達した段階で(ステップS4)、クロック補正回路14Aにおいて、演算部2A〜2Cのカウンタ12A〜12Cから出力されるカウント終了フラグCF1〜CF3(フラグ列FA1)をラッチし、第1の状態値FS1として保持する(ステップS5)。この際、演算部2A〜2Cの全てが正常に動作していれば、フラグ列FA1は「000」となり、第1の状態値FS1も「000」となる。
【0047】
これに対し、演算部2A〜2Cの何れかに異常が生じていれば、フラグ列FA1の3ビットの値のうち、異常が生じている演算部2に対応するビットの値が「1」となる(例えば、演算部2Bのカウンタ12Bが故障して機能を停止しており、カウント終了フラグCF2がリセットされない場合や、カウント終了フラグCF2が「1」となった後に、カウンタ12Bが故障して計数動作を停止してしまった場合に、フラグ列FA1が「010」となる)。
【0048】
また、上記の処理と併行して、クロック出力回路13Aにおいて、位相同期クロックPSC1のレベルを「0」とする(Lowレベルに立ち下げる)(ステップS6)。
【0049】
次に、カウンタ12Aにおいて、カウント値CT1が「N−4」に達するのに応答して、カウント終了フラグCF1の値を「1」に切り換える(ステップS7、S8)。その後、カウント値CT1を1ずつ順にインクリメントし、カウント最大値「N」までカウント処理を進める(ステップS9〜S12)。
【0050】
また、カウンタ12Aのカウント値CT1が「N−4」に達したときには(ステップS7)、カウンタ12Aにおいて、カウント終了フラグCF1〜CF3、第1の状態値FS1及び第2の状態値SS1の論理和を参照し、論理和演算値に応じた処理を行う(ステップS14、S15)。尚、これらの処理については、後に詳述する。
【0051】
さらに、カウンタ12Aのカウント値CT1が「N−2」に達したときには(ステップS10)、クロック補正回路14Aにおいて、演算部2A〜2Cのカウンタ12A〜12Cから出力されるカウント終了フラグCF1〜CF3の反転値(反転フラグ列IFA1)をラッチし、第2の状態値SS1として保持する(ステップS15)。
【0052】
そして、カウンタ12Aのカウント値CT1が「N」に達すると(ステップS12)、カウンタ12Aにおいて、カウント終了フラグCF1を「0」にリセットするとともに(ステップS16)、クロック出力回路13Aにおいて、位相同期クロックPSC1のレベルを「1」とする(Hiレベルに立ち上げる)(ステップS17)。
【0053】
その後、処理をステップS2に戻って2サイクル目の処理を開始し、上記と同様にして、ステップS2〜S7の処理を実行する。
【0054】
カウンタ12Aのカウント値CT1が「N−4」に達すると(ステップS7)、カウンタ12Aにおいて、クロック補正回路14Aから出力されるカウント制御信号CC1の値を参照し、「1」の値を有するビット数が2以上であるか否かを判定する(ステップS13)。この際に参照するカウント制御信号CC1は、カウント終了フラグCF1〜CF3と、2サイクル目のステップS5でラッチした第1の状態値FS1と、1サイクル目のステップS15でラッチした第2の状態値SS1とを対象とした論理和演算によって得たものである。
【0055】
例えば、演算部2A〜2Cのカウンタ12A〜12Cのカウント値CT1〜CT3の進み具合が揃っている場合であれば、1サイクル目のステップS10において(演算部2Aのカウンタ12Aのカウント値CT1が「N−2」に達したとき)、演算部2B、2Cのカウンタ12B、12Cから出力されるカウント終了フラグCF2、CF3の値が「1」となるため、第2の状態値SS1としては「000」が保持されている。
【0056】
この際、演算部2A〜2Cの全てに異常がなく、第1の状態値FS1が「000」となっており、また、上記の取り込んだカウント終了フラグCF1〜CF3の値の何れも「0」であれば、カウント制御信号CC1の1ビット目〜3ビット目の値(図3参照)は、何れも「0」となり、「1」の値を有するビット数が2未満となる(ステップS13:N)。
【0057】
尚、カウンタ12Aのカウント値CT1が「N−4」に達するタイミングでは、カウント終了フラグCF1の値を「1」に切り換える処理も行っているが(ステップS8)、この処理は、ステップS13の処理と同時に行うため、ステップS13で参照するカウント制御信号CC1は、ステップS8のカウント終了フラグCF1=「1」が反映されていないものとなる。
【0058】
そして、ステップS13の判定の結果、「1」の値を有するビット数が2未満であった場合は(ステップS13:N)、カウンタ12Aのカウント値CT1を調整することなく、原振クロックOC1の立ち上がりに応答して、カウント値CT1を「N−3」にインクリメントさせる(ステップS9)。
【0059】
これに対し、例えば、演算部2B、2Cのカウンタ12B、12Cのカウント処理が、演算部2Aのカウンタ12Aに比して進んでいる場合には、1サイクル目のステップS10でラッチされる第2の状態値SS1が「011」であったり、或いは、2サイクル目のステップS13で取り込むカウント終了フラグCF2、CF3の値が「1」となる。その結果、論理和演算によって得られるカウント制御信号CC1において、「1」の値を有するビット数が2以上となる(ステップS13:Y)。
【0060】
この場合は、カウンタ12Aのカウント値CT1を1カウント分スキップさせ(ステップS14)、原振クロックOC1の立ち上がりに応答して、カウント値CT1を「N−2」に移行させる(ステップS10)。
【0061】
こうして、カウンタ12Aのカウント値CT1がカウント最大値「N」に達するまでの期間を1カウント分だけ短くし、位相同期クロックPSC1のLowレベル期間を短縮する。これにより、演算部2Aのクロック出力回路13Aから出力される位相同期クロックPSC1の位相を進め、他の演算部2B、2Cのクロック出力回路13B、13Cから出力される位相同期クロックPSC2、PSC3に対する遅れ分を減少させる。
【0062】
次に、位相同期クロックPSC1〜PSC3の生成例について、(1)水晶発振器の個体差による周波数ずれが生じている場合と、(2)水晶発振器の故障により原振クロックの周波数が低下した場合とに分けて説明する。
【0063】
ここでは、先ず、水晶発振器の個体差による周波数ずれが生じている場合について、図5を中心に参照しながら説明する。尚、図5には、カウント値CT1〜CT3のカウント最大値Nを「16」とした場合を示している。
【0064】
図5のタイミングt1は、1サイクル目において、演算部2Cのカウンタ12Cのカウント値CT3が「12」(N−4)となる時点である。このとき、図示のように、カウンタ12Cのカウント値CT3が、他の演算部2A、2Bのカウンタ12A、12Bのカウント値CT1、CT2よりも遅れていると、カウンタ12Cのカウント終了フラグCF3が立ち上がる前に、他のカウンタ12A、12Bのカウント終了フラグCF1、CF2が立ち上がる状態となる。
【0065】
その結果、演算部2Cのクロック補正回路14Cの論理和演算値(カウント制御信号CC3)は、「110」となる。このときのカウント制御信号CC3の値は、カウント終了フラグCF1〜CF3を順に配列したもの(但し、図4のステップS8のカウント終了フラグCF3=1が反映されていないもの)と同値になるため、カウント制御信号CC3の値を参照することは、カウント終了フラグCF1〜CF3を比較(カウンタ12A〜12Cのカウント値CT1〜CT3を比較)することと同義になる。
【0066】
そして、カウント制御信号CC3の「110」は、演算部2Cのカウンタ12Cのカウント値CT3の進み具合が遅れている旨を示すことになり、カウンタ12Cのカウント値CT3が「12」から「14」にスキップされる。これにより、位相同期クロックPSC3のLowレベル期間が短縮され、タイミングt2に示すように、位相同期クロックPSC3の立ち上がりタイミングが早められる。
【0067】
タイミングt2での調整の結果、今度は、演算部2Bの位相同期クロックPSC2が、他の演算部2A、2Cの位相同期クロックPSC1、PSC3よりも遅れるようになると、演算部2Bのカウンタ12Bのカウント値CT2が「12」となるタイミングt3において、カウンタ12Bのカウント値CT2が「12」から「14」にスキップされる。これにより、タイミングt4において、位相同期クロックPSC2の立ち上がりタイミングが早められ、位相同期クロックPSC1〜PSC3での位相のずれが抑制される。
【0068】
また、図5のタイミングt5〜t8においても、上記と同様にして、カウンタ12のカウント値CTが調整され、位相同期クロックPSCの立ち上がりタイミングが補正される。
【0069】
上記の位相補正を行う際、位相が補正される位相同期クロックPSCは、そのLowレベルの期間が原振クロックOCの1クロック分だけ短くなるため、位相補正後の位相同期クロックPSC1〜PSC3の三者間の位相ずれは、原振クロックOCの2クロック分の範囲となる(位相同期クロックPSC1〜PSC3の何れかを基準とした場合に、他の2つの位相同期クロックPSCの位相が、基準とした位相同期クロックPSCの位相に対して、+1クロックから−1クロックまでの範囲内でずれる)。このため、補正の結果、得られる位相同期クロックPSC1〜PSC3は、以下の式を用いて表すことができる。
【0070】
周波数=原振クロックの周波数×カウント値N (誤差:+0%、−100/N%)
位相ずれ時間=原振クロックの2クロック分(2/F)以下
【0071】
上記の2式より、高い精度の位相同期クロックPSC1〜PSC3を必要とする場合、カウント最大値Nを大きな値とすることで、位相同期クロックPSC1〜PSC3の周波数精度を上げることができ、また、原振クロックOC1〜OC3の周波数を高くすることで、位相ずれ時間を小さくできることが分かる。すなわち、カウンタ12A〜12Cのカウント最大値Nを大きくして位相同期クロックPSC1〜PSC3の周期を長くしつつ、原振クロックOC1〜OC3の周波数を高くして、位相同期クロックPSC1〜PSC3の周期を調整する際の調整幅(カウンタ12A〜12Cの1カウント分の期間)を細かくすれば、精度良く位相同期クロックPSC1〜PSC3を同期化することができる。
【0072】
次に、水晶発振器の故障により原振クロックの周波数が低下した場合について、図6を中心に参照しながら説明する。尚、図6においても、カウント値CT1〜CT3のカウント最大値Nを「16」とした場合を示している。また、同図では、演算部2Cの水晶発振器11Cが故障し、原振クロックOC3の周波数がタイミングt11で低下する場合を例示している。
【0073】
タイミングt11において、原振クロックOC3の周波数が低下すると、それに伴って、演算部2Cのカウンタ12Cのカウント処理の進み具合も遅れるようになる。このため、タイミングt12において、演算部2A、2Bのカウンタ12A、12Bから出力されるカウント終了フラグCF1、CF2の双方が「1」となっても、演算部2Cのカウンタ12Cから出力されるカウント終了フラグCF3は、依然として「0」の値を維持したままとなる。
【0074】
その結果、演算部2Bのカウンタ12Bのカウント値CT2が「14」(N−2)となるタイミングt13において、演算部2Bのクロック補正回路14Bが、第2の状態値SS2として「001」を保持する。また、演算部2Aのカウンタ12Aのカウント値CT1が「14」(N−2)となるタイミング(タイミングt13からやや遅れたタイミング)で、演算部2Aのクロック補正回路14Aが、第2の状態値SS2として「001」を保持する。ここで、第2の状態値SS2の値「001」は、演算部2Cに異常が発生したことを示している。
【0075】
そして、演算部2Bのカウンタ12Bのカウント値CT2が「12」(N−4)になるタイミングt14において、第1の状態値FS1と、カウント終了フラグCF1〜CF3と、第2の状態値SS1との論理和が参照される(図4のステップS13)。このとき、図6に示すように、カウンタ12Bのカウント値CT2が演算部2Aのカウンタ12Aのカウント値CT1よりも遅れている状態であれば、演算部2Bのクロック補正回路14Bでの第1の状態値FS2、カウント終了フラグCF1〜CF3、第2の状態値SS2は、表1に示す通りとなる。
【0076】
【表1】

【0077】
このため、この時点でのクロック補正回路14Bのカウント制御信号CC2は、「101」となり、図4のステップS13の判定処理において、「2ビット以上が「1」を有する」場合に該当することになる。その結果、演算部2Bのカウンタ12Bのカウント値CT2が「12」から「14」にスキップされ、タイミングt15において、位相同期クロックPSC2の立ち上がりタイミングが早められる。
【0078】
このように、演算部2A〜2Cのうちの1つの異常が発生しても、残りの演算部2の二者間で、カウント値CTの遅れを検知して位相同期クロックPSCの周期を縮小補正することができる。
【0079】
次に、演算部2A〜2Cの割込処理の同期化方法について、図1〜図8を参照しながら説明する。
【0080】
ここでは、先ず、割込処理の同期化にあたっての一連の処理の流れについて、図1及び図7を参照しながら説明する。尚、以下に説明する動作は、演算部2A〜2Cの全てで共通したものとなるため、演算部2Aを例にとって説明する。
【0081】
割込処理の同期化にあたっては、図7に示すように、割込制御回路7Aにおいて、位相同期クロックPSC1(演算部2Aの内部動作クロック)に同期して、外部機器4からの割込要求IRを監視する(ステップS21)。そして、外部機器4からの割込要求IRを検知すると(ステップS21:Y)、位相同期クロックPSC1に同期した割込検知信号ID1を出力し(ステップS22)、割込入力の状態となる(ステップS23)。
【0082】
次いで、タイミング制御回路8Aにおいて、割込制御回路7Aからの割込検知信号ID1と、他の演算部2B、2Cの割込制御回路7B、7Cからの割込検知信号ID2、ID3とを取り込み、三者ID1〜ID3の値が一致するか否かを示す一致判定値DS1を割込制御回路7Aに出力する(ステップS24)。
【0083】
次に、割込制御回路7Aにおいて、タイミング制御回路8Aからの一致判定値DS1を参照し、割込検知信号ID1〜ID3の値が一致するか否かを判定する(ステップS25)。その結果、割込検知信号ID1〜ID3の値が一致していた場合(割込検知信号ID1〜ID3の全ての値が「1」であった場合)には、割込開始信号IS1をMPU6Aに出力し、割込処理を開始させる(ステップS26)。
【0084】
一方、割込検知信号ID1〜ID3の値が一致しなかった場合(割込検知信号ID2、ID3の少なくとも一方の値が「0」であった場合)には、不一致待ち状態に移行し(ステップS27)、位相同期クロックPSC1の1クロック分だけ割込開始信号IS1の出力を待機する(ステップS27)。
【0085】
次に、図7に示す処理の下での動作例について、図8を参照しながら説明する。
【0086】
割込要求IRは、外部機器4の動作タイミングに従って出力されるものであるのに対し、位相同期クロックPSC1〜PSC3は、演算部2A〜2Cの内部で生成されるものであるため、割込要求IRと位相同期クロックPSC1〜PSC3とは非同期の関係となる。また、位相同期クロックPSC1〜PSC3は、図4〜図6に示す処理により、ずれ量が縮小補正されているものの、完全に同期にしているわけではなく、位相に微小なずれがある(図5のPSC1〜PSC3を参照)。
【0087】
このため、例えば、タイミングt21に示すように、演算部2Cの位相同期クロックPSC3が「1」(Hiレベル)に立ち上がってから他の演算部2A、2Bの位相同期クロックPSC1、PSC2が「1」に立ち上がるまでの間に、割込要求IRがなされると、演算部2A〜2Cの間で、割込要求IRの検知タイミングに、位相同期クロックPSC1〜PSC3の1クロック分の誤差が生じる。
【0088】
こうした1クロック分の誤差が生じた場合、タイミングt22、t23において、演算部2A、2Bの割込制御回路7A、7Bが、位相同期クロックPSC1、PSC2の立ち上がりに応答して、外部機器4の割込要求IRを検知し、割込検知信号ID1、ID2を出力する一方で、演算部2Cの割込制御回路7Cでは、割込要求IRを検知することができず、割込制御回路7Cの割込検知信号ID3を出力しない。
【0089】
その後、演算部2A、2Bの位相同期クロックPSC1、PSC2の次の立ち上がり(タイミングt25、t26)において、割込制御回路7A、7Bが、各々、割込検知信号ID1〜ID3の一致判定を行うが、先のタイミングt22、t23で割込制御回路7Cの割込検知信号ID3が出力されていないことから、割込検知信号ID1〜ID3の値が一致しない。そのため、演算部2A、2Bの割込制御回路7A、7Bは、割込開始信号IS1の出力を待機し、位相同期クロックPSC1、PSC2の1クロック分の期間が経過した後のタイミングt28、t29で、割込開始信号IS1、IS2をMPU6A、6Bに出力する。
【0090】
その一方で、演算部2Cの位相同期クロックPSC3が立ち上がるタイミングt24では、割込制御回路7Cが、他の割込制御回路7A、7Bから遅れて、外部機器4の割込要求IRを検知し、割込検知信号ID3を出力する。そして、位相同期クロックPSC3の次の立ち上がりとなるタイミングt27において、演算部2Cの割込制御回路7Cが、割込検知信号ID1〜ID3の一致判定を行う。このとき、割込検知信号ID1〜ID3は、何れも「1」となっているため、割込制御回路7Cは、待機処理を経ることなく、割込開始信号IS3をMPU6Cに出力する。
【0091】
以上のように、本実施の形態によれば、クロック生成回路5A〜5Cにより、演算部2A〜2Cの間で位相ずれ量を縮小補正した動作クロック(位相同期クロック)PSC1〜PSC3を生成することができる。そして、外部機器4からの割込要求IRを受け付けるに際しては、上記の位相同期クロックPSC1〜PSC3に同期して割込要求IRを検知するため、演算部2A〜2Cの間で、大きなずれを伴うことなく、割込要求IRを検知することができる。
【0092】
但し、その場合でも、割込要求IRの入力タイミングによっては、演算部2A〜2Cの間で、割込要求IRの検知タイミングにずれが生じる場合があるが、割込制御回路7A〜7Cにおいて、割込要求IRを先行して検知した割込制御回路7が、位相同期クロックPSCの1クロック分だけ待って割込開始信号ISを出力するため、MPU6A〜6Cに同一処理ステップ時に割込入力することができる。
【0093】
以上、本発明の実施の形態を説明したが、本発明は、上記構成に限定されるものではなく、特許請求の範囲に記載された発明の範囲内で種々の変更が可能である。
【0094】
例えば、上記実施の形態においては、3つの演算部2A〜2Cを有する場合を例示したが、演算部2の数は、これに限定されるものではなく、2であってよいし、或いは、4以上であってもよい。
【0095】
また、上記実施の形態では、カウンタ12Aにおいて、カウント値CT1が「N−4」のときに、カウント終了フラグCF1の値を「1」とし、カウント値CT1がカウント最大値Nのときに、カウント終了フラグCF1の値を「0」としているが、「1」と「0」の割り当ては逆であってよい。このことは、クロック出力回路13Aの動作クロックにおいても同様であり、カウンタ12Aのカウント値CT1が「N/2」に達したときに「1」(Hiレベル)とし、「N」に達したときに「0」(Lowレベル)としてもよい。
【符号の説明】
【0096】
1 冗長演算システム
2(2A〜2C) 演算部
3 多数決処理部
4 外部機器
5(5A〜5C) クロック生成回路
6(6A〜6C) MPU
7(7A〜7C) 割込制御回路
8(8A〜8C) タイミング制御回路
11(11A〜11C) 水晶発振器
12(12A〜12C) カウンタ
13(13A〜13C) クロック出力回路
14(14A〜14C) クロック補正回路
30 冗長演算システム
31(31A〜31C) 演算部
32 多数決処理部
33(33A〜33C) 水晶発振器
34(34A〜34C) クロック生成回路
35 外部機器
IR 割込要求
PSC(PSC1〜PSC3) 位相同期クロック
ID(ID1〜ID3) 割込検知信号
IS(IS1〜IS3) 割込開始信号
DS(DS1〜DS3) 一致判定値
OC(OC1〜OC3) 原振クロック
CT(CT1〜CT3) カウント値
CF(CF1〜CF3) カウント終了フラグ
FA(FA1〜FA3) フラグ列
IFA(IFA1〜IFA3) 反転フラグ列
FS(FS1〜FS3) 第1の状態値
SS(SS1〜SS3) 第2の状態値
CC(CC1〜CC3) カウント制御信号

【特許請求の範囲】
【請求項1】
複数の演算部を備えた冗長構成を有し、外部からの割込要求に応じて該複数の演算部の各々が割込処理を行う冗長演算システムであって、
前記複数の演算部の各々が、
所定の原振クロックを出力する発振器と、
前記原振クロックのクロック数を計数するカウンタと、
該カウンタのカウント値に基づき、該演算部の動作クロックを生成するクロック出力回路と、
自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、その差分に応じて、自演算部の前記動作クロックの周期を補正する補正回路と、
前記周期が補正された動作クロックに同期して前記割込要求を検知する検知回路と、
自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とを対比し、それらの検知結果が一致したときに、自演算部の演算プロセッサに割込開始信号を出力する割込制御回路とを備えることを特徴とする冗長演算システム。
【請求項2】
前記割込制御回路は、自演算部の検知回路の検知結果と、他の演算部の検知回路の検知結果とが一致しないときに、前記周期が補正された動作クロックの1クロック分の期間に亘って前記割込開始信号の出力を待機し、その期間の経過後に、該割込開始信号を出力することを特徴とする請求項1に記載の冗長演算システム。
【請求項3】
前記カウンタは、1からN(Nは4以上の偶数)までのカウント値で前記原振クロックを計数し、
前記クロック出力回路は、前記カウンタのカウント値がN/2に達したときに、前記動作クロックのレベルをHi又はLowの一方とし、該カウンタのカウント値がNに達したときに、該動作クロックのレベルをHi又はLowの他方とすることで、前記動作クロックを生成し、
前記補正回路は、前記カウンタのカウント値がN−k(kは、Nよりも小さく、かつ、2以上の整数)に達したときに、自演算部のカウンタのカウント値と、他の演算部のカウンタのカウント値とを比較し、該自演算部のカウンタのカウント値が該他の演算部のカウンタのカウント値よりも遅れている場合に、該自演算部のカウンタのカウント値をスキップさせることを特徴とする請求項1又は2に記載の冗長演算システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−248809(P2011−248809A)
【公開日】平成23年12月8日(2011.12.8)
【国際特許分類】
【出願番号】特願2010−123955(P2010−123955)
【出願日】平成22年5月31日(2010.5.31)
【出願人】(303013763)NECエンジニアリング株式会社 (651)
【出願人】(000232221)日本電気航空宇宙システム株式会社 (14)
【Fターム(参考)】