(57)【特許請求の範囲】
【請求項１】
独立した複数のクロック源と、当該複数のクロック源毎に接続され、接続されたクロック源より供給されたシステムクロックに基づいて同じ演算を行い、同じＩＯ命令を発行する複数の演算部と、当該複数の演算部が入出力するデータを検証する中間制御部と、当該複数の演算部と他装置とのデータの送受信を制御する入出力部と、から構成され、
前記演算部は、それぞれ、
前記クロック源から供給されたシステムクロックのクロックサイクル数を計数し、計数結果を前記中間制御部に送信するクロック管理部を備え、
前記中間制御部は、
前記複数の演算部がそれぞれ発行した複数のＩＯ命令を受信して比較し、一致するか否かを判別し、一致すると判別した場合に、当該ＩＯ命令を前記入出力部に供給するＩＯ比較部と、
複数の前記クロック管理部が送信した複数の計数結果を比較して、クロックサイクル数の差がある場合には、前記ＩＯ比較部が当該クロックサイクル数の差に基づいた異なるタイミングで前記複数のＩＯ命令を受信して比較するように調整するＦＴ制御部と、を備え、
前記ＦＴ制御部は、
前記入出力部から前記演算部への転送命令を受信すると、前記クロックサイクル数の差に基づいて、前記複数の演算部毎に異なったタイミングで、前記複数の演算部毎に当該転送命令を配信する、
ことを特徴とするフォルトトレラントコンピュータ。
【請求項２】
独立した複数のクロック源と、当該複数のクロック源毎に接続され、且つ、接続されたクロック源より供給されたシステムクロックに基づいて同じ演算を行う複数の演算部と、当該複数の演算部が入出力するデータを検証する中間制御部と、当該複数の演算部と他装置とのデータの送受信を制御する入出力部と、から構成されるフォルトトレラントコンピュータの同期制御方法であって、
前記複数の演算部が、前記クロック源それぞれから前記複数の演算部に供給された複数のシステムクロックのクロックサイクル数を計数する計数ステップと、
前記中間制御部が、前記計数ステップで計数した複数のシステムクロックのクロックサイクル数の差があるか否かを判別する判別ステップと、
前記中間制御部が、前記複数の演算部がそれぞれ発行した複数のＩＯ命令を比較して、一致するか否かを判別し、一致すると判別した場合に、当該ＩＯ命令を前記入出力部に供給する比較ステップと、
前記中間制御部が、前記判別ステップで前記クロックサイクル数の差がある場合には、前記比較ステップで当該クロックサイクル数の差に基づいた異なるタイミングで前記複数のＩＯ命令を受信して比較するように調整する調整ステップと、
前記中間制御部が、前記入出力部が受信した前記演算部への転送命令を、前記クロックサイクル数の差に基づいて、前記複数の演算部毎に異なったタイミングで、前記複数の演算部に当該転送命令を配信する配信ステップと、を備える、
ことを特徴とする同期制御方法。
【請求項３】
独立した複数のクロック源と、当該複数のクロック源毎に接続され、且つ、接続されたクロック源より供給されたシステムクロックに基づいて同じ演算を行う複数の演算部と、当該複数の演算部と他装置とのデータの送受信を制御する入出力部と、から構成されるフォルトトレラントコンピュータを、
前記クロック源それぞれから前記複数の演算部に供給された複数のシステムクロックのクロックサイクル数を計数する計数手段、
前記計数手段が計数した複数のシステムクロックのクロックサイクル数の差があるか否かを判別する判別手段、
前記複数の演算部がそれぞれ発行した複数のＩＯ命令を比較して、一致するか否かを判別し、一致すると判別した場合に、当該ＩＯ命令を前記入出力部に供給する比較手段、
前記判別手段が前記クロックサイクル数の差があると判別した場合には、前記比較手段が当該クロックサイクル数の差に基づいた異なるタイミングで前記複数のＩＯ命令を受信して比較するように調整する調整手段、
前記入出力部が受信した前記演算部への転送命令を、前記クロックサイクル数の差に基づいて、前記複数の演算部毎に異なったタイミングで、前記複数の演算部に配信する配信手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算部を備え、当該複数の演算部が同じ演算を行うフォルトトレラントコンピュータ、その同期制御方法、及びそのプログラムに関する。
【背景技術】
【０００２】
フォルトトレラントコンピュータは、複数の演算部と複数のＩＯ部とを備え、各ＩＯ部は、複数の演算部から同時にＩＯ命令を受信した場合に、複数の演算部が同期していると判別し、ＩＯ処理を行う。
【０００３】
例えば、特許文献１のフォルトトレラントコンピュータは、クロック源、クロック源が出力するクロックをカウントする動作カウンタ、タイミング調整部、演算部等から構成されるシステムを複数、備える。そして、動作カウンタがカウントしたカウント値に基づいて、タイミング調整部に、複数の演算部がＩＯ命令を発行するタイミングを調整させる。このフォルトトレラントコンピュータは、複数のクロック源を備えるため、クロック源が単一障害点になることがない。
【特許文献１】特開２００７−２４９５１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、特許文献１のフォルトトレラントコンピュータは、タイミング調整部等を備えており、装置の構成が複雑であった。
また、ＩＯ部から各演算部へ同じ命令を配信する場合に、配信された命令は、各演算部のシステムクロックのずれに対応していなかった。
本発明は、上記問題点に鑑みてなされたもので、複数の演算部と複数のクロック源とを備える簡便なフォルトトレラントコンピュータ、その同期制御方法、及びそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の第１の観点に係るフォルトトレラントコンピュータは、
独立した複数のクロック源と、当該複数のクロック源毎に接続され、接続されたクロック源より供給されたシステムクロックに基づいて同じ演算を行い、同じＩＯ命令を発行する複数の演算部と、当該複数の演算部が入出力するデータを検証する中間制御部と、当該複数の演算部と他装置とのデータの送受信を制御する入出力部と、から構成され、
前記演算部は、それぞれ、
前記クロック源から供給されたシステムクロックのクロックサイクル数を計数し、計数結果を前記中間制御部に送信するクロック管理部を備え、
前記中間制御部は、
前記複数の演算部がそれぞれ発行した複数のＩＯ命令を受信して比較し、一致するか否かを判別し、一致すると判別した場合に、当該ＩＯ命令を前記入出力部に供給するＩＯ比較部と、
複数の前記クロック管理部が送信した複数の計数結果を比較して、クロックサイクル数の差がある場合には、前記ＩＯ比較部が当該クロックサイクル数の差に基づいた異なるタイミングで前記複数のＩＯ命令を受信して比較するように調整するＦＴ制御部と、を備え、
前記ＦＴ制御部は、
前記入出力部から前記演算部への転送命令を受信すると、前記クロックサイクル数の差に基づいて、前記複数の演算部毎に異なったタイミングで、前記複数の演算部毎に当該転送命令を配信する、
ことを特徴とする。
【０００６】
本発明の第２の観点に係る同期制御方法は、
独立した複数のクロック源と、当該複数のクロック源毎に接続され、且つ、接続されたクロック源より供給されたシステムクロックに基づいて同じ演算を行う複数の演算部と、当該複数の演算部が入出力するデータを検証する中間制御部と、当該複数の演算部と他装置とのデータの送受信を制御する入出力部と、から構成されるフォルトトレラントコンピュータの同期制御方法であって、
前記複数の演算部が、前記クロック源それぞれから前記複数の演算部に供給された複数のシステムクロックのクロックサイクル数を計数する計数ステップと、
前記中間制御部が、前記計数ステップで計数した複数のシステムクロックのクロックサイクル数の差があるか否かを判別する判別ステップと、
前記中間制御部が、前記複数の演算部がそれぞれ発行した複数のＩＯ命令を比較して、一致するか否かを判別し、一致すると判別した場合に、当該ＩＯ命令を前記入出力部に供給する比較ステップと、
前記中間制御部が、前記判別ステップで前記クロックサイクル数の差がある場合には、前記比較ステップで当該クロックサイクル数の差に基づいた異なるタイミングで前記複数のＩＯ命令を受信して比較するように調整する調整ステップと、
前記中間制御部が、前記入出力部が受信した前記演算部への転送命令を、前記クロックサイクル数の差に基づいて、前記複数の演算部毎に異なったタイミングで、前記複数の演算部に当該転送命令を配信する配信ステップと、を備える、
ことを特徴とする。
【０００７】
本発明の第３の観点に係るプログラムは、
独立した複数のクロック源と、当該複数のクロック源毎に接続され、且つ、接続されたクロック源より供給されたシステムクロックに基づいて同じ演算を行う複数の演算部と、当該複数の演算部と他装置とのデータの送受信を制御する入出力部と、から構成されるフォルトトレラントコンピュータを、
前記クロック源それぞれから前記複数の演算部に供給された複数のシステムクロックのクロックサイクル数を計数する計数手段、
前記計数手段が計数した複数のシステムクロックのクロックサイクル数の差があるか否かを判別する判別手段、
前記複数の演算部がそれぞれ発行した複数のＩＯ命令を比較して、一致するか否かを判別し、一致すると判別した場合に、当該ＩＯ命令を前記入出力部に供給する比較手段、
前記判別手段が前記クロックサイクル数の差があると判別した場合には、前記比較手段が当該クロックサイクル数の差に基づいた異なるタイミングで前記複数のＩＯ命令を受信して比較するように調整する調整手段、
前記入出力部が受信した前記演算部への転送命令を、前記クロックサイクル数の差に基づいて、前記複数の演算部毎に異なったタイミングで、前記複数の演算部に配信する配信手段、
として機能させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数の演算部と複数のクロック源とを備えるフォルトトレラントコンピュータにおいて、簡便な装置の構成を実現することが出来る。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態に係るフォルトトレラントコンピュータ１００について説明する。フォルトトレラントコンピュータ１００は、図１に示すように、クロック源１０，２０と、演算部３０，４０と、中間制御部５０と、ＩＯデバイス６０とを備える。
【００１０】
クロック源１０は、システムクロックを生成して演算部３０に供給する。また、クロック源２０は、システムクロックを生成して演算部４０に供給する。ただし、クロック源１０とクロック源２０とは、それぞれ独立している。
【００１１】
演算部３０は、ＣＰＵ（Central Processing Unit）等であり、クロック源１０より供給されたシステムクロックに基づいて動作し、中間制御部５０にＩＯ命令を発行する。また、演算部３０は、クロック管理部３１を備える。
【００１２】
クロック管理部３１は、クロック源１０より供給されたシステムクロックのクロックサイクル数を計測し、計測結果を中間制御部５０に送信する。
【００１３】
また、演算部４０は、ＣＰＵ（Central Processing Unit）等であり、クロック源２０より供給されたシステムクロックに基づいて動作し、中間制御部５０にＩＯ命令を発行する。また、演算部４０は、クロック管理部４１を備える。
【００１４】
クロック管理部４１は、クロック源２０より供給されたシステムクロックのクロックサイクル数を計測し、計測結果を中間制御部５０に送信する。
【００１５】
中間制御部５０は、演算部３０，４０より供給されたＩＯ命令を検証し、ＩＯデバイス６０に送信する。また、中間制御部５０は、ＩＯデバイス６０より供給された転送命令を演算部３０，４０に転送する。
【００１６】
中間制御部５０は、ＦＴ制御部５１とＩＯ比較部５２とを備える。
【００１７】
ＩＯ比較部５２は、演算部３０，４０がそれぞれ発行したＩＯ命令を比較して、一致するか否かを判別し、一致すると判別した場合に、ＩＯ命令をＩＯデバイス６０に供給する。
【００１８】
ＦＴ制御部５１は、クロック管理部３１，４１が送信した計数結果を比較して、クロックサイクル数の差がある場合には、その差に基づいて、ＩＯ比較部５２が演算部３０，４０からのＩＯ命令を受信するタイミング及びそれらを比較するタイミングを調整する。
ＦＴ制御部５１は、ＩＯデバイス６０から演算部３０，４０への転送命令を受信すると、クロック管理部３１，４１が送信したクロックサイクル数の差に基づいて、異なったタイミングで、演算部３０，４０に転送命令を送信する、
【００１９】
以下、上記構成のフォルトトレラントコンピュータ１００の動作を説明する。
【００２０】
演算部３０，４０内のクロック管理部３１，４１は、システムの同期リセット信号が解除されたタイミングで、クロックサイクル数の計数を開始する。クロック管理部３１，４１は、計数したクロックサイクル数をＦＴ制御部５１に送信し、ＦＴ制御部５１はクロック管理部３１，４１から送信されたクロックサイクル数の比較判定を実施する。クロックサイクル数が一致していないと判定された時は、ＦＴ制御部５１は、演算部３０，４０からのＩＯ命令の有無を判定する。そして、有効なＩＯ命令が有ると判定された時は、ＦＴ制御部５１は、クロックサイクル数の差違を、ＩＯ比較部５２による演算部３０，４０からのＩＯ命令の受信及び比較のタイミングに反映させる。
例えば、図２に示すように、クロック管理部３１が計数したクロックサイクル数が、クロック管理部４１が計数したクロックサイクル数より１クロック少ない場合には、演算部３０が行う処理は、演算部４０が行う処理より１クロック遅れている。そこで、ＩＯ比較部５２は、演算部４０が発行したＩＯ命令を受信してから１クロック経過した後に、演算部３０が発行したＩＯ命令を受信する。そして、ＩＯ比較部５２は、それらのＩＯ命令を比較する。
次に、ＦＴ制御部５１は、ＩＯデバイス６０から演算部３０，４０への転送命令の有無の判定を行う。有効な命令が有ると判定された時は、ＦＴ制御部５１は、演算部３０，４０への命令の転送タイミングにクロックサイクル数の差違を反映させる。
例えば、クロック管理部３１が計数したクロックサイクル数が、クロック管理部４１が計数したクロックサイクル数より１クロック少ない場合には、演算部３０は、演算部４０より１クロック遅れている。そこで、ＦＴ制御部５１は、演算部４０に転送命令を送信してから１クロック経過した後に、演算部３０に同じ転送命令を送信する。
【００２１】
次に、本発明の実施形態に係るフォルトトレラントコンピュータ１００が行う同期制御処理を、図３のフローチャートを参照して詳細に説明する。
【００２２】
システムの同期リセット信号が解除されると、演算部３０，４０内のクロック管理部３１，４１は、クロックサイクル数の計数を開始する（ステップＳ１１０）。
【００２３】
クロック管理部３１，４１は、計数したクロックサイクル数の情報をＦＴ制御部５１に送信する（ステップＳ１２０）。
【００２４】
ＦＴ制御部５１は、クロック管理部３１，４１からそれぞれクロックサイクル数の情報を受信すると、それらのクロックサイクル数が一致しているか否かを判別する（ステップＳ１３０）。
【００２５】
クロックサイクル数が一致していないと判別された場合には（Ｓ１３０；ＮＯ）、ＦＴ制御部５１は、一致していない旨をＩＯ比較部５２に通知し、ＩＯ比較部５２は、その通知を受けると、演算部３０，４０より有効なＩＯ命令を受信したか否かを判別する（ステップＳ１４０）。
【００２６】
有効なＩＯ命令を受信していないと判別した場合には（Ｓ１４０；ＮＯ）、ＩＯ比較部５２は、その旨をＦＴ制御部５１に通知し、処理をステップＳ１８０に進める。
【００２７】
有効なＩＯ命令を受信したと判別した場合には（Ｓ１４０；ＹＥＳ）、ＩＯ比較部５２は、クロックサイクル数の差違を、演算部３０，４０からのＩＯ命令の受信及び比較のタイミングに反映させ（ステップＳ１５０）、演算部３０，４０からのＩＯ命令が一致するか否かを判別する（ステップＳ１６０）。
【００２８】
演算部３０，４０からのＩＯ命令が一致していないと判別した場合には（Ｓ１６０；ＮＯ）、ＩＯ比較部５２は、その旨をＦＴ制御部５１に通知し、処理をステップＳ１８０に進める。
【００２９】
演算部３０，４０からのＩＯ命令が一致したと判別した場合には（Ｓ１６０；ＹＥＳ）、ＩＯ比較部５２は、ＩＯ命令をＩＯデバイス６０に転送し（ステップＳ１７０）、ＩＯ命令を転送した旨をＦＴ制御部５１に通知し、処理をステップＳ１８０に進める。
【００３０】
ＩＯ比較部５２よりＩＯ命令が一致していない又は転送された旨の通知を受けると、ＦＴ制御部５１は、ＩＯデバイス６０より演算部３０，４０への有効な転送命令を受信したか否かを判別する（ステップＳ１８０）。
【００３１】
有効な転送命令を受信していないと判別した場合には（Ｓ１８０；ＮＯ）、ＦＴ制御部５１は、その旨をクロック管理部３１，４１に通知し、処理をステップＳ１２０に戻す。
【００３２】
有効な転送命令を受信したと判別した場合には（Ｓ１８０；ＹＥＳ）、ＦＴ制御部５１は、クロックサイクル数の差異に基づいて、転送タイミングを調整し、それぞれ異なるタイミングで演算部３０，４０に転送命令を転送し（ステップＳ１９０）、転送命令を転送した旨をクロック管理部３１，４１に通知し、処理をステップＳ１２０に戻す。
【００３３】
クロックサイクル数が一致していると判別された場合には（Ｓ１３０；ＹＥＳ）、ＦＴ制御部５１は、一致している旨をＩＯ比較部５２に通知し、ＩＯ比較部５２は、その通知を受けると、演算部３０，４０より有効なＩＯ命令を受信したか否かを判別する（ステップＳ２００）。
【００３４】
有効なＩＯ命令を受信していないと判別した場合には（Ｓ２００；ＮＯ）、ＩＯ比較部５２は、その旨をＦＴ制御部５１に通知し、処理をステップＳ２３０に進める。
【００３５】
有効なＩＯ命令を受信したと判別した場合には（Ｓ２００；ＹＥＳ）、ＩＯ比較部５２は、演算部３０，４０からのＩＯ命令が一致するか否かを判別する（ステップＳ２１０）。
【００３６】
演算部３０，４０からのＩＯ命令が一致していないと判別した場合には（Ｓ２１０；ＮＯ）、ＩＯ比較部５２は、その旨をＦＴ制御部５１に通知し、処理をステップＳ２３０に進める。
【００３７】
演算部３０，４０からのＩＯ命令が一致したと判別した場合には（Ｓ２１０；ＹＥＳ）、ＩＯ比較部５２は、ＩＯ命令をＩＯデバイス６０に転送し（ステップＳ２２０）、ＩＯ命令を転送した旨をＦＴ制御部５１に通知し、処理をステップＳ２３０に進める。
【００３８】
ＩＯ比較部５２よりＩＯ命令が一致していない又は転送された旨の通知を受けると、ＦＴ制御部５１は、ＩＯデバイス６０より演算部３０，４０への有効な転送命令を受信したか否かを判別する（ステップＳ２３０）。
【００３９】
有効な転送命令を受信していないと判別した場合には（Ｓ２３０；ＮＯ）、ＦＴ制御部５１は、その旨をクロック管理部３１，４１に通知し、処理をステップＳ１２０に戻す。
【００４０】
有効な転送命令を受信したと判別した場合には（Ｓ２３０；ＹＥＳ）、ＦＴ制御部５１は、同じタイミングで演算部３０，４０に転送命令を転送し（ステップＳ１９０）、転送命令を転送した旨をクロック管理部３１，４１に通知し、処理をステップＳ１２０に戻す。
【００４１】
このようにして、同期制御処理によれば、演算部３０，４０からのＩＯ命令の受信及び比較のタイミングの調整を行い、また、ＩＯデバイス６０から演算部３０，４０への命令の転送タイミングの調整を行うことで、簡便にクロックサイクル数の差異を補正し、同期動作を継続させることが出来る。
【００４２】
なお、本発明は上記実施形態に限定されず、種々の応用及び変形が可能である。
【００４３】
上記実施形態において、フォルトトレラントコンピュータ１００は、それぞれ二つの演算部及びクロック源を備えていたが、三つ以上の演算部及びクロック源を備えるようにして、三つ以上のシステムクロックのクロックサイクル数の差に基づいて、ＩＯ命令の比較タイミングと、ＩＯデバイスから演算部への命令の転送タイミングとを調整してもよい。
【００４４】
また、その他、具体的な細部構成等についても適宜変更可能である。
【図面の簡単な説明】
【００４５】
【図１】本発明の実施形態に係るフォルトトレラントコンピュータの構成図である。
【図２】ＩＯ命令の受信と比較とを説明するための図である。
【図３】同期制御処理を説明するためのフローチャートである。
【符号の説明】
【００４６】
１０    クロック源
２０    クロック源
３０    演算部
３１    クロック管理部
４０    演算部
４１    クロック管理部
５０    中間制御部
５１    ＦＴ制御部
５２    ＩＯ比較部
６０    ＩＯデバイス
１００  フォルトトレラントコンピュータ
【図１】
0005206009.tif 000002
【図２】
0005206009.tif 000003
【図３】
0005206009.tif 000004