(57)【要約】【課題】  二重化されたシステムがロックステップ動作していたが、ハードウェア故障によらない原因から、Ｉ／Ｏバスに動作ズレを生じた場合に、ＣＰＵの実行を停止させることなく回復動作を行う。【解決手段】  動作ズレ検出回路１４０において、クロック信号ＣＬＫ１、ＣＬＫ２のズレを検出したことを契機に、回復動作に入る。位相差検出回路１４３で動作ズレの期間を検出し、動作ズレの期間に応じた位相先行信号Ｓ１５と位相遅れ信号Ｓ１６とを電圧調整回路１４４に出力する。電圧調整回路１４４は入力された位相先行信号Ｓ１５と位相遅れ信号Ｓ１６とに応じてリファレンス電圧を上下させ、ＶＣＯ１４５に入力する。【選択図】  図１
2005182693.tif 000002
【特許請求の範囲】
【請求項１】
互いに同期して動作する少なくとも２つの動作モジュールを備える多重化システムであって、
各動作モジュールは、
動作クロックに応答して動作するプロセッサと、
前記プロセッサの動作タイミングと同期対象の他の動作モジュール内のプロセッサの動作タイミングとの差分に応じた動作クロックを生成して、前記プロセッサに供給するクロック部と、
を具備することを特徴とする多重化システム。
【請求項２】
前記クロック部は、
周波数制御信号の信号レベルに応じた周波数の動作クロックを生成して、前記プロセッサに供給するクロック生成手段と、
前記プロセッサの動作タイミングを示す信号と、同期対象の他の動作モジュール内のプロセッサの動作タイミングを示す信号とを比較することにより、前記プロセッサの動作タイミングと同期対象の他の動作モジュール内のプロセッサの動作タイミングとの差分を求め、求めた差分に対応する信号レベルを有する周波数制御信号を前記クロック生成手段に供給する差分検出手段と、
を具備することを特徴とする請求項１に記載の多重化システム。
【請求項３】
前記少なくとも２つの動作モジュールは、ロックステップ動作を行う動作モジュールであり、
前記差分検出手段は、前記少なくとも２つの動作モジュールのプロセッサの対応する出力信号出力タイミング同士を比較して、その差分を検出し、検出した差分に対応する信号レベルの周波数制御信号を出力する、
ことを特徴とする請求項２に記載の多重化システム。
【請求項４】
動作クロックに応答して動作するプロセッサと、
前記プロセッサの動作タイミングと同期対象の他の動作モジュール内のプロセッサの動作タイミングとの差分に応じた動作クロックを生成して、前記プロセッサに供給するクロック部と、
を具備することを特徴とするプロセッサモジュール。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック信号に同期してロックステップ動作する多重化システムおよびプロセッサモジュールに関する。
【背景技術】
【０００２】
電子計算機システム内部にはＣＰＵ、主記憶などを相互に接続するバスが設けられている。フォールトトレラントな電子計算機システムにおいては、ＣＰＵ、主記憶、バスなどが多重化されている。このようなフォールトトレラントな計算機システムの一形態として、ＣＰＵ、主記憶、バスなど、１台の計算機として単独動作可能なモジュールを複数（例えば２つ）動作させ、これら複数のモジュール間の処理結果を命令毎に比較して一致しているか否かを判別して、一致していれば正常に動作しているとして処理を継続し、一致していなければその処理をやり直すという処理形態がある。
【０００３】
この形態では、例えば、特許文献１に記載されたようなクロック供給装置を用いて、二重化されたシステムモジュールのロックステップ動作を行う。ロックステップ動作のためには、各モジュールの動作タイミングの基準となるクロック信号の位相を同期させる必要がある。そして、同期ズレが発生した際には、再びクロック信号の位相を同期させなければならない。
【０００４】
この場合、タイミングのズレからロックステップ動作の復旧までの間、本来ユーザのために実行すべき処理は一方のモジュールのみで実行され、他方はロックステップ動作の回復のための処理を実行することになる。従って、ロックステップ動作が回復するまでの間は、本来ユーザが実行していた処理を行っているモジュールのどこか１箇所でも故障した場合、システム全体が停止するという事態を引き起こす。
【特許文献１】特開平８−１９０４４２号公報（第４頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来、ロックステップ動作が必要な二重化システムにおいて、故障によらない原因（例えば、ＣＰＵの製造ロットの違い、ＣＰＵのアーキテクチャの改良）で動作タイミングにズレが発生した場合であっても、どちらか一方のモジュールを故障とみなしてロックステップ動作の復旧の処理を行っていた。
【０００６】
二重化システムが使用されるミッションクリティカルな分野では、システム全体が停止する可能性をできる限り削減することが重要である。従って、片方のモジュールのみで処理を実行する期間が発生することは大きな問題である。しかも、この故障によらない原因による同期ズレの発生は、ハードウェア故障と比べて頻繁に発生する。（場合によっては、１時間に１回程度発生する。）
【０００７】
また、ロックステップ動作を復旧させる際には、故障した（あるいは、故障とみなされた）モジュールを一旦停止させた後、システム起動時と同様な初期化を実施し、動作を継続しているモジュールからレジスタやメモリの内容をコピーして、両方のモジュールのタイミングを合わせて処理を再開するという手順で、再度ロックステップ動作を回復させていた。そのため、本来の動作を行っているモジュールにおいて、ユーザのために実行すべき処理が中断するという問題もあった。
【０００８】
本発明は、上記実状に鑑みてなされたもので、故障によらない原因により、ロックステップ動作の動作ズレが起こった場合においても、モジュールの動作を継続させる多重化システムおよびプロセッサモジュールを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の観点にかかる多重化システムは、
互いに同期して動作する少なくとも２つの動作モジュールを備える多重化システムであって、
各動作モジュールは、
動作クロックに応答して動作するプロセッサと、
前記プロセッサの動作タイミングと同期対象の他の動作モジュール内のプロセッサの動作タイミングとの差分に応じた動作クロックを生成して、前記プロセッサに供給するクロック部と、
を具備する。
【００１０】
本発明によれば、故障によらない原因により、同期動作が要求されている動作モジュール間で動作ズレが生じた場合には、モジュールの動作タイミングを司るクロック部それぞれを調整して、クロック部がプロセッサに供給する信号の位相を再び同期させる。これにより、動作モジュールの動作をいずれも停止することなく、同期動作を復旧させることができる。
【００１１】
上記多重化システムにおいて、クロック部は、例えば、
周波数制御信号の信号レベルに応じた周波数の動作クロックを生成して、前記プロセッサに供給するクロック生成手段と、
前記プロセッサの動作タイミングを示す信号と、同期対象の他の動作モジュール内のプロセッサの動作タイミングを示す信号とを比較することにより、前記プロセッサの動作タイミングと同期対象の他の動作モジュール内のプロセッサの動作タイミングとの差分を求め、求めた差分に対応する信号レベルを有する周波数制御信号を前記クロック生成手段に供給する差分検出手段と、
を具備する。
【００１２】
上記多重化システムにおいて、例えば、
前記少なくとも２つの動作モジュールは、ロックステップ動作を行う動作モジュールであり、
前記差分検出手段は、前記少なくとも２つの動作モジュールのプロセッサの対応する出力信号出力タイミング同士を比較して、その差分を検出し、検出した差分に対応する信号レベルの周波数制御信号を出力する。
【００１３】
本願の第２の観点にかかるプロセッサモジュールは、
動作クロックに応答して動作するプロセッサと、
前記プロセッサの動作タイミングと同期対象の他の動作モジュール内のプロセッサの動作タイミングとの差分に応じた動作クロックを生成して、前記プロセッサに供給するクロック部と、
を具備する。
【発明の効果】
【００１４】
故障によらない原因により多重化された動作モジュール間で動作のズレが発生した場合であれば、そのズレを反映した位相信号を生成し、クロック信号の周波数を調整することで、クロック信号を再び同期させるようにすることができる。このため、多重化された動作モジュールのそれぞれ動作を停止させることなく、ロックステップ動作を回復させることができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の形態にかかる二重化システムを説明する。
【００１６】
図１は、本実施の形態にかかる計算機システムのうち、ＣＰＵ周辺の回路のブロック図を示したものである。なお、図１においては、システムモジュール１と２とで、同一の機能を有するものについては、最上位の数字以外は同一の符号を付している。システムモジュール１、２はそれぞれ、同一の機能および構成を有している。従って、以下では、システムモジュール１の各部の機能および構成についての説明を行う。
【００１７】
システムモジュール１は、オペレーティングシステム、ユーザプログラムなどを実行し、入出力装置を介して実行結果を図示しない出力装置に出力する。図示するように、システムモジュール１は、中央演算処理装置（ＣＰＵ）１０と、チップセット１１と、主メモリ１２と、入出力装置（Ｉ／Ｏ）１３と、クロック生成部１４とを備える。ＣＰＵ１０と、チップセット１１と、主メモリ１２と、Ｉ／Ｏ１３とは、クロック生成部１４が供給するクロック信号ＣＬＫ１に同期して動作する。
システムモジュール１と２との間のデータ交換はＩ／Ｏ１３、２３を介して行う。
【００１８】
ＣＰＵ１０は、各種データ処理を主メモリ１２に格納された動作プログラムによって実行する。ここで、動作プログラムには、ＯＳ、ドライバ、アプリケーションなどを含むものとする。
【００１９】
チップセット１１は、ＣＰＵ１０と、主メモリ１２と、Ｉ／Ｏ１３との間のデータ交換を制御する。
【００２０】
なお、本実施の形態では、ＣＰＵ１０とチップセット１１との間のＦＳＢ（Front Side Bus）上に流れるアドレスストローブ信号を、バス動作を示す信号Ｓ１０とする。ここで、アドレスストローブ信号とは、ＣＰＵ１０がデータの入出力のタイミングをチップセット１１に通知するための信号である。
【００２１】
主メモリ１２は、例えば、ＲＡＭ（Random Access Memory）から構成され、ＣＰＵ１０のワークエリアとして機能する。主メモリ１２は、ＯＳ、アプリケーションプログラム、などの実行コードあるいはデータを記憶している。
【００２２】
Ｉ／Ｏ１３は、ＣＰＵ１０、主メモリ１２とＩ／Ｏ２３との間のデータ転送処理を行う。
【００２３】
クロック生成部１４は、周期的にトグル動作を行うクロック信号ＣＬＫ１を生成する。また、システムモジュール１、２のバス動作を示す信号Ｓ１０、Ｓ２０を取り込み、システムモジュール１および２の動作タイミングにズレが発生した場合に、そのズレが無くなるように、クロック信号ＣＬＫ１の周波数を調整する。
【００２４】
クロック生成部１４は、動作ズレ検出回路１４０と、タイミング発生回路１４１と、位相信号発生回路１４２と、位相差検出回路１４３と、電圧調整回路１４４と、ＶＣＯ（Voltage Controlled Oscillator）１４５と、二重化状態保持回路１４６とを備える。
【００２５】
動作ズレ検出回路１４０は、例えば、順序回路を備え、システムモジュール１および２のバス動作を示す信号Ｓ１０、Ｓ２０を取り込み、システムモジュール１および２の動作タイミングにズレが発生しているか否かを検出する。そして、システムモジュール１および２の動作タイミングにズレが発生したタイミングを捉えて、そのことを示す信号である、動作ズレ検出信号Ｓ１１を生成する。バス動作を示す信号Ｓ１０、Ｓ２０がズレている間、動作ズレは検出されるが、二重化同期ステータス信号Ｓ１４でマスクされるため、この信号Ｓ１４がＬｏｗレベルにある間は、動作ズレ検出信号Ｓ１１はＬｏｗレベルにならない。
【００２６】
タイミング発生回路１４１は遅延回路などを備え、バス動作を示す信号Ｓ１０と二重化同期ステータス信号Ｓ１４とクロック信号ＣＬＫ１とを取り込んで、ロックステップ動作を回復させる合図となる信号である、動作開始信号Ｓ１２を出力する。より詳細には、二重化同期ステータス信号Ｓ１４がＨｉｇｈレベルの間、動作開始信号Ｓ１２はＨｉｇｈレベルとなり、二重化同期ステータス信号Ｓ１４がＬｏｗレベルの間、動作開始信号Ｓ１２はバス動作を示す信号Ｓ１０をクロック信号ＣＬＫ１で所定クロックサイクル分だけ遅延させた信号となる。
【００２７】
位相信号発生回路１４２は順序回路などを備え、システムモジュール１の動作タイミングを反映した信号である、位相信号Ｓ１３を生成する。すなわち、動作ずれ検出信号がＬｏｗレベルになると、位相信号Ｓ１３をＬｏｗレベルにしてロックステップ動作を停止させる。そして、動作開始信号Ｓ１２がＬｏｗレベルになったことを検出すると、クロック信号ＣＬＫ１の立ち上がりのタイミングで、位相信号Ｓ１３をトグルさせて位相差検出回路１４３、２４３に転送する。
【００２８】
位相差検出回路１４３は順序回路などを備え、位相信号Ｓ１３と位相信号Ｓ２３との位相差を検出する。そして、位相信号Ｓ１３の位相が位相信号Ｓ２３の位相よりも進んでいる場合には、位相先行信号Ｓ１５を出力し、位相信号Ｓ１３の位相が位相信号Ｓ２３の位相よりも遅れている場合には、位相遅れ信号Ｓ１６を出力する。位相差検出回路１４３が出力する、位相先行信号Ｓ１５および位相遅れ信号Ｓ１６は、検出した位相差に応じた長さの信号となっている。
【００２９】
図２を使用して位相差検出回路１４３の構成を説明する。図示するように、位相信号発生回路１４２より入力される位相信号Ｓ１３はＤフリップフロップ１４３１のクロックポートに入力される。同様に、位相信号発生回路２４２より入力される位相信号Ｓ２３はＤフリップフロップ１４３２のクロックポートに入力される。Ｄフリップフロップ１４３１のＱポートの出力信号は、位相先行信号Ｓ１５として電圧調整回路１４４に出力され、Ｄフリップフロップ１４３２のＱポートの出力信号は、位相遅れ信号Ｓ１６として電圧調整回路１４４に出力される。
【００３０】
Ｄフリップフロップ１４３１、１４３２では共に、クロックポートに入力される信号の立ち上がりエッジでＤポートに接続されているＨｉｇｈレベル信号（常にＨｉｇｈレベル電圧が入力される）が取り込まれ、Ｑポートから出力される。そして、リセット入力がされると、Ｑポートの出力がＬｏｗレベルになる。すなわち、クロックポートに入力される信号の立ち上がりエッジでＱポートの出力がＨｉｇｈレベルになり、リセット入力がされるまでこの状態が保持される。
【００３１】
両方のＤフリップフロップ１４３１、１４３２のＱポートの出力電圧がＨｉｇｈレベルになった時点で、両方のＤフリップフロップにリセット入力がなされる。例えば、位相信号Ｓ１３、Ｓ２３の位相がズレている場合、最初に位相信号の立ち上がりが発生した側の、ＤフリップフロップのＱポートの出力が先にＨｉｇｈレベルとなり、後から位相信号の立ち上がりが発生した側の、ＤフリップフロップのＱポートの出力がＨｉｇｈレベルになった時点で、Ｄフリップフロップ１４３１、１４３２にリセットがかかり、位相先行信号Ｓ１５および位相遅れ信号Ｓ１６はＬｏｗレベルになる。
【００３２】
また、動作ズレ検出回路１４０より入力される動作ズレ検出信号Ｓ１１がＬｏｗレベルである場合にも、Ｄフリップフロップ１４３１、１４３２にリセットがかかりＬｏｗレベルになる。このリセットよって、位相信号Ｓ１３またはＳ２３の動作タイミングのズレを正しく反映した位相先行信号Ｓ１５と位相遅れ信号Ｓ１６とを発生する。
【００３３】
図１に戻り、電圧調整回路１４４は、位相先行信号Ｓ１５のＨｉｇｈレベルの期間に応じてリファレンス電圧信号Ｓ１７の電圧値（リファレンス電圧）Ｖ１７を下げ、位相遅れ信号Ｓ１６のＨｉｇｈレベルの期間に応じてリファレンス電圧Ｖ１７を上昇させる。ただし、Ｈｉｇｈレベルの期間が１クロックサイクルあたりの時間に比べて微少である場合（例えば、１クロックサイクルの１０分の１）、リファレンス電圧Ｖ１７を変化させない。
【００３４】
電圧調整回路１４４は、さらに所定期間内のリファレンス電圧Ｖ１７の変動範囲を観測しており、変動範囲が所定の範囲内にあれば、電圧一定信号Ｓ１８をＨｉｇｈレベルにし、所定の範囲を超えていれば、Ｌｏｗレベルにする。
【００３５】
ＶＣＯ１４５は、例えば、水晶発振子などを備える。ＶＣＯ１４５はリファレンス電圧Ｖ１７に応じた周波数のクロック信号ＣＬＫ１を出力する。本実施の形態におけるＶＣＯ１４５では、リファレンス電圧Ｖ１７が上昇するとクロック信号ＣＬＫ１の周波数が上がり、リファレンス電圧Ｖ１７が下降するとクロック信号ＣＬＫ１の周波数が下がるものとする。
【００３６】
二重化状態保持回路１４６は、順序回路などを備え、システムモジュール１と２とがロックステップ動作を行っているか否かの状態を保持する回路である。動作ズレが生じていない場合は、Ｈｉｇｈレベルの二重化同期ステータス信号Ｓ１４を出力し、動作ズレが生じている場合は、Ｌｏｗレベルの二重化同期ステータス信号Ｓ１４を出力する。動作ズレ検出信号Ｓ１１がＬｏｗレベルになったことを検出すると、二重化状態保持回路１４６は、自己が保持する状態をシステムモジュール１と２とがロックステップ動作を行っていない状態とする。また、電圧一定信号Ｓ１８がＨｉｇｈレベルになったことを検出して、二重化状態保持回路１４６は、システムモジュール１と２とがロックステップ動作を行っている状態とする。
【００３７】
動作ズレ検出回路１４０から入力される動作ズレ検出信号Ｓ１１が動作ズレを示す電圧（Ｌｏｗレベル）になった次のクロックサイクルから、二重化状態保持回路１４６はＬｏｗレベルの二重化同期ステータス信号Ｓ１４を出力する。また、電圧調整回路１４４から入力される電圧一定信号Ｓ１８がＨｉｇｈレベルになったことを検出し、そのことを検出した次のクロックサイクルから、二重化状態保持回路１４６はＨｉｇｈレベルの二重化同期ステータス信号Ｓ１４を出力する。
【００３８】
次に、このシステムの動作を図３、図４のタイミングチャートを参照して説明する。図３は、動作ズレが発生した前後の期間を説明し、図４は動作ズレから復旧し、ロックステップ動作を再開する前後の期間を説明する。なお、図３、４の各タイミングｔ０〜ｔ１３、ｔ２０〜ｔ２９はクロック信号ＣＬＫ１の立ち上がりエッジを基準とする。タイミングｔ０〜ｔ１３の間隔は同一であり、タイミングｔ２０〜ｔ２９の間隔も同一とする。（ただし、２つの間隔が同一とは限らない。）そして、タイミングｔ５において、１クロック分の動作ズレが発生し、タイミングｔ２５において、動作ズレから復旧したものとする。なおこの間も、ＣＰＵ１０、２０はクロック信号ＣＬＫ１、ＣＬＫ２を基準として通常の各種処理を実行しているものとする。
【００３９】
まず、図３により、動作ズレをクロック生成部１４で検出し、ロックステップ動作の回復に入るまでのクロック生成部１４の各部の動作を説明する。クロック生成部２４の動作も同様であるので、説明を省略する。
【００４０】
タイミングｔ０〜ｔ５まで、クロック生成部１４は通常動作（ロックステップ動作中）である。すなわち、バス動作を示す信号Ｓ１０、Ｓ２０は同期しており、動作ズレ検出回路１４０は、動作ズレを検出していない。なお、タイミングｔ０、ｔ２、ｔ４では、位相先行信号Ｓ１５と位相遅れ信号Ｓ１６とは、瞬間的にＨｉｇｈレベルとなっている。これは、上述したように、位相差検出回路１４３のＤフリップフロップ１４３１、１４３２のＱポートからＨｉｇｈレベルの信号が出力されてから、Ｄフリップフロップ１４３１、１４３２にリセット入力がなされるまで時間がかかることを示している。
【００４１】
タイミングｔ５ではバス動作を示す信号Ｓ１０はこれまでと同じ間隔でトグル動作を繰り返しているが、バス動作を示す信号Ｓ２０は動作ズレを起こし、バス動作を示す信号Ｓ１０と比べて、１クロック分遅くなった。このため、動作ズレ検出回路１４０から、Ｌｏｗレベルな動作ズレ検出信号Ｓ１１が出力され、動作ズレが生じたことをクロック生成部１４が検出する。Ｌｏｗレベルな動作ズレ検出信号Ｓ１１は位相信号発生回路１４２と、位相差検出回路１４３と、二重化状態保持回路１４６とに送られる。
【００４２】
位相差検出回路１４３は、Ｌｏｗレベルな動作ズレ検出信号Ｓ１１が入力されたため、Ｄフリップフロップ１４３１、１４３２にタイミングｔ５でリセット入力がなされ、位相先行信号Ｓ１５と位相遅れ信号Ｓ１６とをＬｏｗレベルにする。
【００４３】
二重化状態保持回路１４６は、Ｌｏｗレベルな動作ズレ検出信号Ｓ１１を受けて、タイミングｔ５で自身の状態を動作ズレが発生している状態に変更する。そして、次のタイミングｔ６からＬｏｗレベルな二重化同期ステータス信号Ｓ１４を出力する。
【００４４】
位相信号Ｓ１３、Ｓ２３は、Ｌｏｗレベルな二重化同期ステータス信号Ｓ１４が入力されたため、タイミングｔ６でリセットがかかり、出力はＬｏｗレベルになる。
【００４５】
タイミング発生回路１４１は、タイミングｔ７からバス動作を示す信号Ｓ１０を２クロック分送らせた信号である動作開始信号Ｓ１２を出力する。同様にタイミング発生回路２４１も、タイミングｔ８からバス動作を示す信号Ｓ２０を２クロック分送らせた信号である動作開始信号Ｓ２２を出力する。
【００４６】
位相信号発生回路１４２は、Ｌｏｗレベルな動作開始信号Ｓ１２が入力された次のクロックであるタイミングｔ８からトグル動作を再開し、位相信号Ｓ１３を発生させる。
【００４７】
位相差検出回路１４３は、位相信号Ｓ１３、Ｓ２３の入力から位相先行信号Ｓ１５と、位相遅れ信号Ｓ１６とを電圧調整回路１４４に出力する。この動作例では、システムモジュール１の動作がシステムモジュール２の動作と比較して、１クロック早いため、タイミングｔ８で位相先行信号Ｓ１５がＨｉｇｈレベルとなる。次に、タイミングｔ９で、位相信号Ｓ２３がＨｉｇｈレベルになるので、位相遅れ信号Ｓ１６がＨｉｇｈレベルになるが、リセット入力がフリップフロップ１４３１とフリップフロップ１４３２とになされ、共にＬｏｗレベルになる。
【００４８】
電圧調整回路１４４は、位相先行信号Ｓ１５と位相遅れ信号Ｓ１６とに基づいてリファレンス電圧Ｖ１７を上下させる。本動作例では、位相先行信号Ｓ１５のみが実質的に入力されるので、リファレンス電圧Ｖ１７は下降する。逆に、電圧調整回路２４４が出力するＶ２７は上昇する。リファレンス電圧Ｖ１７が下降するので、ＶＣＯ１４５はクロック信号ＣＬＫ１の周波数を下げる。逆にＶＣＯ２４５はクロック信号ＣＬＫ２の周波数を上げる。
【００４９】
タイミングｔ１３からｔ２０までの間に、電圧調整回路１４４、２４４それぞれでリファレンス電圧Ｖ１７、Ｖ２７を上下させ、ＶＣＯ１４５、２４５クロック信号ＣＬＫ１、ＣＬＫ２の位相を同期させる。また、位相先行信号Ｓ１５と位相遅れ信号Ｓ２６とがＨｉｇｈレベルになっている期間が少しずつ短くなり、タイミングｔ２０までに、位相先行信号Ｓ１５と位相遅れ信号Ｓ２６とはロックステップ動作している場合と同様の出力波形となる。なお、この間にリファレンス電圧Ｖ１７（Ｖ２７）が変動したため、電圧一定信号Ｓ１８（Ｓ２８）がＬｏｗレベルに変化する。
【００５０】
この間、電圧調整回路１４４はリファレンス電圧Ｖ１７の変動を観測し、一定期間において所定の範囲内に変動が収まっているか否かを判別している。そして、電圧調整回路１４４が、タイミングｔ２５でその条件が満たされたと判別し、電圧一定信号Ｓ１８をＨｉｇｈレベルにする。
【００５１】
電圧一定信号Ｓ１８がＨｉｇｈレベルになったことを検出した二重化状態保持回路１４６は、自身の状態をロックステップ動作中であることを示す状態に変化させ、次のタイミングｔ２６から二重化同期ステータス信号Ｓ１４をＨｉｇｈレベルにする。
【００５２】
タイミング発生回路１４１は、二重化同期ステータス信号Ｓ１４がＨｉｇｈレベルになったので、タイミングｔ２６で、動作開始信号Ｓ１２の出力を停止する。すなわち、Ｈｉｇｈレベルの出力に保つ。
【００５３】
そして、タイミングｔ２６でクロック信号ＣＬＫ１、ＣＬＫ２は同期しており、ロックステップ動作が回復する。
【００５４】
なお、本発明は上記実施の形態に限定されず、種々の変形および応用が可能である。
【００５５】
上記実施の形態では、システムモジュール１と２との間で発生した動作ズレが１クロックである場合を説明したが、位相ズレがそれ以上となるような場合にも対応可能である。この場合、位相信号Ｓ１３、Ｓ２３のトグル動作する周期をより長くすることで対応する。
【００５６】
上記実施の形態では、バス動作を示す信号Ｓ１０、Ｓ２０として、ＣＰＵ１０（２０）とチップセット１１（２１）との間のＦＳＢ（Front Side Bus）のアドレスストローブ信号を用いたが、システムモジュール１と２との間でロックステップ動作する信号であって、頻繁に動作するが、毎クロックはトグルしない信号であれば、他の信号（例えば、データストローブ信号）を用いてもよい。また、そのような信号が無い場合は、バス上の複数の信号をデコードして、バス動作を示す信号Ｓ１０、Ｓ２０を生成するようにすることもできる。
【００５７】
また、クロック信号の周波数の制御は、上述の例に限られず、ＰＩＤ（proportional plus integral plus derivative）制御など、既知の制御手法を利用することが可能である。
【００５８】
上記実施の形態では、バス動作を示す信号Ｓ１０、Ｓ２０の立ち上がりエッジに基づいて動作ズレを検出していたが、立ち下がりエッジでもよいし、立ち上がり、立ち下がり双方のエッジを利用してもよい。また、上記実施の形態と同じ結果をもたらすのであれば、上記の各信号Ｓ１０〜Ｓ２８のＨｉｇｈレベル信号およびＬｏｗレベル信号の意味付けはどのようになされていてもよい。また、論理ゲート、順序回路の構成も同様である。
【００５９】
また、上記実施の形態では、二重化システムを例に説明したが、３つ以上のモジュールの同期動作を行うように構成できる。
【図面の簡単な説明】
【００６０】
【図１】本発明の実施の形態にかかる二重化システムの構成を示した図である。
【図２】図１の位相差検出回路の構成を説明するための図である。
【図３】図１中のクロック生成部において、同期ズレ補正開始前後のタイミングチャートを示した図である。
【図４】図１中のクロック生成部において、同期ズレ補正完了前後のタイミングチャートを示した図である。
【符号の説明】
【００６１】
１、２  システムモジュール
１０、２０  ＣＰＵ
１１、２１  チップセット
１２、２２  主メモリ
１３、２３  Ｉ／Ｏ
１４、２４  クロック生成部
１４０、２４０  動作ズレ検出回路
１４１、２４１  タイミング発生回路
１４２、２４２  位相信号発生回路
１４３、２４３  位相差検出回路
１４３１、１４３２  Ｄフリップフロップ
１４４、２４４  電圧調整回路
１４５、２４５  ＶＣＯ
１４６、２４６  二重化状態保持回路
Ｓ１０、Ｓ２０  バス動作を示す信号
Ｓ１１、Ｓ２１  動作ズレ検出信号
Ｓ１２、Ｓ２２  動作開始信号
Ｓ１３、Ｓ２３  位相信号
Ｓ１４、Ｓ２４  二重化同期ステータス信号
Ｓ１５、Ｓ２５  位相先行信号
Ｓ１６、Ｓ２６  位相遅れ信号
Ｓ１７、Ｓ２７  リファレンス電圧信号
Ｓ１８、Ｓ２８  電圧一定信号
【図１】
2005182693.tif 000003
【図２】
2005182693.tif 000004
【図３】
2005182693.tif 000005
【図４】
2005182693.tif 000006