JPH0773059A - フォールトトレラント型コンピュータシステム - Google Patents

フォールトトレラント型コンピュータシステム

Info

Publication number
JPH0773059A
JPH0773059A JP6056577A JP5657794A JPH0773059A JP H0773059 A JPH0773059 A JP H0773059A JP 6056577 A JP6056577 A JP 6056577A JP 5657794 A JP5657794 A JP 5657794A JP H0773059 A JPH0773059 A JP H0773059A
Authority
JP
Japan
Prior art keywords
cpu
clock
signal
processor
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP6056577A
Other languages
English (en)
Inventor
A Vulba Richard
リチャード・エイ・ヴルバ
S Krekka James
ジェイムズ・エス・クレッカ
W Fay Kaylan Jr
カイラン・タブリュ・フェイ・ジュニア
L Ramano Larry
ラリー・エル・ラマノ
A Mehta Nikhil
ニキール・エイ・メータ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tandem Computers Inc
Original Assignee
Tandem Computers Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of JPH0773059A publication Critical patent/JPH0773059A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum

Abstract

(57)【要約】 【目的】 フォールトトレラント型コンピュータシステ
ムにおいて、高速プロセッサの高速処理能力を十分活用
できるようにする。 【構成】 フォールトトレラント型コンピュータシステ
ムは、独立したクロックサイクルタイミングで同一の命
令ストリームを実行する多重のCPUを使用する。前記
CPUは、その入力動作または出力動作がローカルCP
Uクロックとは非同期のメモリまたは装置に対するアク
セスを必要とするまで、前記命令を内部的に実行する。
このような入出力動作において、各前記CPUは、同数
のクロックサイクルを使用してその入出力動作を完了す
るよう強制される。前記入出力動作が完了すると、前記
命令ストリームの内部処理は、各CPU内でクロック整
列されるが、発振器のドリフトによって実時間に関して
は分離しているかもしれない状態で、続行される。累積
したドリフトは、実時間に関して前記CPU同士を同期
させるタイマ割り込みによって定期的に除去される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、コンピュータシステ
ムに関し、特に、多重のCPUを使用したフォールトト
レラント型コンピュータシステムに関するものである。
【0002】
【従来の技術】高い信頼性を有するディジタル処理は、
工業的処理制御から航空宇宙産業、ならびに、人間の安
全に関わるその他の用途、および、銀行、金融業務など
の多くの用途において、きわめて重要である。これま
で、冗長(リダンダンシー)構成を使用することによっ
て、様々なコンピュータアーキテクチャにおける高い信
頼性が実現されている。例えば、3重モジュール・リダ
ンダンシー(TMR:TripleModular Redundancy)システ
ム(以下、TMRシステムという)は、同一の命令スト
リームを実行する3つの中央処理ユニット(CPU)を
使用し、各々のCPUの出力をボーティング(voting)
するための、つまり、比較して多数決するためのハード
ウエアまたはソフトウエアによりクロス検査することに
よって、高い信頼性を提供するものである。
【0003】このようなTMRシステムにおいて、ボー
ティング回路またはボーティングソフトウエアは、典型
的には、各CPUからの入出力(I/O)動作要求を比
較する。このボーティングでは、3つのCPUのうちの
2つのみが一致するので、1つのCPUにおける故障を
検出できることになる。その後、該故障を生じたCPU
は無視され、前記一致した2つのCPUを使用した動作
が続行される。この種のボーティングにおいて重要なこ
とは、前記3つのCPUのI/O要求が一致するよう、
各前記CPUが同一の命令ストリームを実行していなけ
ればならない、ということである。また、正しいTMR
動作を行うためには、同じく前記3つのCPUのI/O
要求が一致するよう、各前記CPUが、他の2つのCP
Uと時間的に近接して同一の命令ストリームを実行す
る、ことが必要である。このため、ボーティングによる
フォールトトレランス(故障許容性)には、CPU間に
おけるある種の同期が重要である。
【0004】最も簡単な同期方式は、すべてのCPUに
ついて単一のクロックを使用する“ロックステップ”方
式であり、この方式はTMRシステムでは普通に使用さ
れている。しかしながら、単一のクロックは単一の故障
点の検出を可能にするにすぎないので、システムのフォ
ールトトレランスが制限される。他の同期方式は、前記
CPUごとに個別のクロックを使用するものであり、こ
こでは、比較を可能にするために前記CPU同士が同期
させられる。このような個別クロック式のTMRシステ
ムにあっては、各々のCPUのサイクルごとの同期が行
われている。しかし、上記のような多重のCPU間の
“厳格”な同期によって、各CPUがボーティング可能
に命令ストリームの同一点にあることが保証されること
になるが、このような連続的な同期は、処理速度に対し
て重い負担と、重大な影響を与える。個別クロック式の
CPUをより長い間隔で同期させる“疎結合”システム
は、性能を向上できるものである。しかし、前記個別ク
ロック式の疎結合システムにおけるCPU同期方式に
は、重大な問題点がある。特定の実時間時点において、
発振器のドリフトによって各CPUが異なる命令を実行
している可能性があるので、実時間、すなわち、“掛時
計タイム”に基づいた定期的な同期は、信頼性に欠け
る。
【0005】代案として、“仮想時間”、すなわち、各
CPUで実行される命令の進行に応じて各CPU内で定
義される時間を、同期のために使用することも可能であ
る。しかし、この場合、各CPUにおける同一の仮想時
間時点でのみボーティングがなされるよう、各CPU内
の仮想時間を精密にモニタする、ことが必要になる。よ
り高いクロック速度、および、より完全な内部アーキテ
クチャを使用した高性能のマイクロプロセッサデバイス
が利用可能になっている。これらのマイクロプロセッサ
デバイスは、該デバイスを使用するフォールトトレラン
ト型コンピュータシステムに対して、より高い潜在能力
を提供する。
【0006】
【発明が解決しようとする課題】しかしながら、上記の
ような高速マイクロプロセッサの高性能化は、同一の命
令ストリームを実行する多重のプロセッサを使用したT
MRまたはその他のフォールトトレラント型システムに
おいてこれらプロセッサを同期させる上で、様々な問題
を有する。特に、現在のリスク(RISC: Reduced Instru
ction Set Computing)プロセッサのような、いくつか
の高性能の多重マイクロプロセッサは、一部並列的に命
令を実行するものであり、このため、該プロセッサの仮
想時間を明確に定義するのが困難または不可能である。
また、各サイクル後の同期は、多重CPUシステムか
ら、高速プロセッサによって実現可能な処理速度を奪っ
てしまう。従って、同期タイプの高信頼性の構成におい
て、現在の高速プロセッサの高速処理能力を十分活用で
きるフォールトトレラント型コンピュータシステムが要
望されている。この発明は上述の点に鑑みてなされたも
ので、同期タイプの高信頼性の構成において、高速プロ
セッサの高速処理能力を十分活用できるようにしたフォ
ールトトレラント型コンピュータシステムを提供しよう
とするものである。特に、この発明は、各々独立のクロ
ックを使用して緩く結合された複数のプロセッサを備え
た高性能のフォールトトレラント型コンピュータシステ
ムにおいて、これらのプロセッサを内部と外部の処理動
作の両方にわたってクロック長同期化することにより、
高性能を実現したフォールトトレラント型コンピュータ
システムを提供しようとするものである。
【0007】
【課題を解決するための手段】上記課題を解決するた
め、この発明に係るフォールトトレラント型コンピュー
タシステムは、複数のプロセッサモジュールであって、
各前記プロセッサモジュールが、命令ストリームを実行
するものであり、前記命令の実行タイミングを制御する
クロック信号を発生する独立したクロックを有し、各前
記プロセッサモジュールがI/O(入出力)動作要求を
定期的に発生し、該I/O動作要求が前記プロセッサモ
ジュール間において非同期的に発生されるようになった
前記複数のプロセッサモジュールと、前記プロセッサモ
ジュールとは別個にクロックされる1つまたは2つ以上
の外部装置と、I/O動作中、前記プロセッサモジュー
ルを前記1つまたは2つ以上の外部装置に接続する手段
と、各前記プロセッサモジュールごとの前記I/O動作
の長さを、各前記プロセッサモジュールごとに同じクロ
ックサイクル数となるよう制御する同期手段とを具備し
たものである。
【0008】また、この発明に係るフォールトトレラン
ト型コンピュータシステムは、複数の中央処理ユニット
(CPU)であって、各CPUが、他のCPUとは独立
したタイミングで命令の実行を制御するための独立した
クロックを有し、複数の命令の実行の後に定期的にI/
O動作要求を発する前記複数のCPUと、前記複数のC
PUから前記定期的なI/O動作要求を入力し、該I/
O動作要求をボートする手段と、前記CPUのI/O動
作のクロック長を制御する同期手段であって、各前記C
PUが要求したI/O動作のために該CPUが使用した
クロックサイクル数を調べる手段と、前記クロックサイ
クル数を比較して、前記I/O動作に関する最長のクロ
ック長を検出する手段と、各前記CPUにおける前記I
/O動作のためのクロック長が前記最長のクロック長と
なるよう制御する手段とを備えた前記同期手段とを具備
したものである。
【0009】さらに、この発明に係るフォールトトレラ
ント型コンピュータシステムは、命令ストリームを処理
し、外部装置との通信を行うフォールトトレラント型コ
ンピュータシステムであって、略同じ命令ストリームを
実行し、略同一の構成を有する第1、第2および第3の
中央プロセッサユニット(CPU)であって、各前記C
PUが独立したクロックを有し、さらに、前記命令スト
リームが複数のクロックサイクルにわたって前記CPU
の間で非同期的に実行されるよう、前記クロックが前記
命令ストリームの実行のタイミングをとるようになった
前記第1、第2および第3のCPUと、1つまたは2つ
以上のメモリモジュールと、前記第1、第2および第3
のCPUならびに前記1つまたは2つ以上のメモリモジ
ュールに接続されていて、前記CPUのI/O動作中に
おいて、前記CPUによる前記メモリモジュールおよび
前記外部装置に対するアクセスを可能にするバス手段
と、前記I/O動作中、各前記CPUごとに同じ量、前
記CPUを一時機能停止させる手段と、前記CPU同士
を実時間に関して略整列させるために、前記CPUを異
なる一時機能停止時間長にわたり定期的に一時機能停止
させる手段とを具備したものである。
【0010】さらに、この発明に係る方法は、各前記C
PUごとに独立に与えられるクロックサイクルで、同じ
命令ストリームを実行する複数の中央プロセッサユニッ
ト(CPU)を備えたフォールトトレラント型コンピュ
ータシステムを同期させる方法であって、各前記CPU
のローカルクロックサイクルを他の前記CPUの各々に
与える工程と、前記CPUによるI/O動作要求を検出
し、各前記CPUにおける前記ローカルクロックサイク
ルのカウントを開始するためのカウント開始信号を出力
する工程と、各前記CPUが自己のローカルクロックお
よび他の前記CPUのローカルクロックのクロックサイ
クルをカウントするよう、前記I/O動作要求を検出し
カウントする工程を繰り返す工程と、各前記CPUが各
前記CPUに対応するI/Oカウント値を有するよう、
前記I/O動作の終わりを検出し、各前記CPU内にお
けるクロックサイクルのカウントを停止する工程と、各
前記CPU内におけるカウント値を比較し、最長のカウ
ント値を検出する工程と、
【0011】各前記CPUごとに、ローカルカウント値
と前記最大のカウント値との差を検出し、該差を待ちカ
ウント値として出力する工程と、前記CPUの前記待ち
カウント値に対応する数のクロックサイクルにわたり各
前記CPUを一時機能停止する工程と、前記待ちカウン
ト値に対応する一時機能停止が完了した後、前記命令ス
トリームの処理を続行するために各前記CPUのを開放
する工程とからなり、各前記CPUが前記I/O動作に
ついて同じ数のクロックサイクルを使用するよう強制さ
れることを特徴とするものである。
【0012】さらに、この発明に係るフォールトトレラ
ント型コンピュータシステムは、複数のプロセッサモジ
ュールであって、各前記プロセッサモジュールが、命令
ストリームを実行するものであり、前記命令の実行タイ
ミングを制御するクロック信号を発生する独立したクロ
ックを有し、各前記プロセッサモジュールがI/O動作
要求を定期的に発生し、該I/O動作要求が前記プロセ
ッサモジュール間において非同期的に発生されるように
なった前記複数のプロセッサモジュールと、前記I/O
動作要求を入力し、要求されたI/O動作が完了したと
きに前記プロセッサモジュールに対して確認信号を出力
する手段とを具備し、各前記プロセッサモジュールが、
各前記プロセッサモジュールごとの前記I/O動作の長
さを検出する手段と、1または2つ以上の前記プロセッ
サモジュールについて前記I/O動作の長さのエラーを
検出する手段とを備えたことを特徴とするものである。
【0013】
【作用】上記構成からなるこの発明のフォールトトレラ
ント型コンピュータシステムは、内部処理および外部処
理の両方の動作においてクロック長同期された(clockl
ength synchronized)疎結合(loosely coupled)高性
能プロセッサ群を使用することによって、高い性能を実
現するを提供するものである。好ましい実施例による
と、この発明は、同一の命令ストリームを実行する多重
の中央処理ユニットまたは中央処理モジュール(CP
U)を使用したコンピュータシステムを提供する。前記
CPUは、それぞれ自己の独立したクロックを有し、互
いに“疎結合”されている。すなわち、この場合、“掛
時計時間”のある特定時点において、各々の前記CPU
は、異なるクロックサイクルにあり、異なる命令を実行
しているかもしれない。これらローカルのCPUクロッ
クと同期していないメモリまたは装置に対するアクセス
を必要とするまで、前記CPUは、前記命令ストリーム
を内部的に実行する。このようなI/O動作において、
各前記CPUは、同期論理回路によって、同数のクロッ
クサイクルを使用して前記I/O動作を完了するよう強
制される。該I/O動作が完了すると、各前記CPUに
おいてクロック整列しているが、発振器のドリフトによ
り実時間に関しては整列していないかもしれないような
状態で、前記命令ストリームの内部処理が続行される。
【0014】好ましい実施例において、各CPUには、
前記I/O動作を完了するために該CPUおよび他のC
PUが使用したサイクル数を調べる同期論理回路が使用
される。好ましくは、各前記CPUの同期論理回路は、
各CPUからローカルクロックサイクルを入力する、前
記CPUの数と同数のカウンタを使用する。前記カウン
タのカウント値は、最長のカウント値を検出するために
比較され、各CPUの同期論理回路は、前記最長のカウ
ント値から、そのCPUが前記動作のために必要とした
サイクル数を減算する。その減算結果は“待ちカウント
値”となる。そして、各CPUの同期論理回路は、前記
I/O動作の終わりにそのI/O論理回路を解放する前
に、前記“待ちカウント値”によって示されたサイクル
数だけ待つ。読出しの場合、前記CPUはデータを待つ
ので、前記インターフェース論理回路の解放により、前
記CPUも解放されることになる。しかし、書込みにつ
いては、前記CPUは一時機能停止していないかもしれ
ないので、前記インターフェースの解放は、該インター
フェースを再使用のためにのみ解放する。前記“待ちカ
ウント値”分の調節の後、各I/O要求は、各CPUに
おいて全く同数のクロックサイクルを使用したことにな
る。このように、各CPUは同数のクロックサイクルを
使用するので、該CPUが他のCPUに対して有してい
たドリフトつまり実時間のズレは、前記I/O動作中維
持される。故に、ある1つのクロックカウント値は、各
CPU内における同一の状態を明確に定義し、これによ
り、ボーティングのための比較が可能になる。
【0015】この発明の他の特徴によると、前記CPU
が待ち状態のまま過ごサイクル数を最少化し、且つ、性
能に対する影響を最小化するため、累積されたドリフト
は定期的に除去される。最初にI/O要求を行うCPU
は、該I/O要求が実行の前にボートされ得るよう、他
のCPUが同じ要求を行うのを待たなければならない。
各CPUについて前記I/O動作の長さを同じに維持す
るために、すべての前記CPUは、同数のクロックサイ
クル待たなければならない。故に、ドリフトによって、
前記最初のCPUはより長く待つことになる。その後、
より遅いCPUも同じサイクル数だけ待たなければなら
ない。通常の動作時において、前記発振器はすべて公称
値に近接しており、すべてのCPUは相互に数クロック
サイクルの範囲内であり、その結果、実時間ドリフトは
性能に対して最小の影響を与えるのみである。好ましく
は、本発明は、このドリフトに関する絶対的な制限を、
所定のクロックサイクル数に制限する。
【0016】好ましい実施例において、前記CPUが整
列させられることによって、累積したドリフトを除去で
きるよう、クロックサイクルをカウントするタイマは、
例えば10ミリ秒ごとに前記CPUに割り込みをかけ
る。この整列は、より速い方のCPUを一時的に停止す
るためのソフトウエアルーチンによって開始されるのが
好ましい。この一時機能停止の前に、前記CPUは“ア
イドル”状態におかれる。故に、異なる長さの一時機能
停止の間において、同期上の不確実性を発生する可能性
のあるイベントは、存在しないことになる。
【0017】1つの実施例において、前記CPUによる
I/O要求についてのボーティングは、I/Oプロセッ
サと前記CPUとの間に設けられたメモリモジュールに
おいて行ってよい。二重のデータを格納した2つの同一
の、自己チェック機能を有するメモリモジュールが使用
される。前記CPUによるメモリ参照は、各前記メモリ
モジュールの別個のポートに接続された別個のバスを介
して行われる。該別個のCPUからメモリへのバスを介
したメモリ参照は、メモリリクエスト時において各前記
メモリモジュールでボートされる。
【0018】このシステムの前記CPUは、Unix(登録
商標)のようなオペレーティングシステムを利用可能な
市販の高性能マイクロプロセッサを使用するものが好ま
しい。該システムをフォールトトレラントにする該シス
テムの構成要素は、前記オペレーティングシステムにと
って透明であり、該オペレーティングシステムに容易に
適合されるものである。
【0019】従って、本発明は、ボーティングによる速
度および出力の比較のために最適に同期される多重CP
Uを備えた、高信頼性のコンピュータシステムを提供す
る。さらに、本発明は、現在広く使用されているオペレ
ーティングシステムおよび応用ソフトウエアとの互換性
を有する、高性能のフォールトトレラント型コンピュー
タシステムを提供する。
【0020】
【実施例】図1には、この発明のフォールトトレラント
型コンピュータシステムの一実施例が示されている。図
示のように、このコンピュータシステムは、ここではC
PU−A、CPU−BおよびCPU−Cとも言う3つの
CPUを備え、これらのCPUは1つの論理的プロセッ
サとして動作するようになっている。なお、ここでは、
最小のTMRボーティングシステムに対応する3つのC
PUが示されているが、異なるレベルのフォールトトレ
ランスを提供するために、2つのCPUまたは3つ以上
のCPUを使用してもよい。好ましくは、各前記CPU
は、応用ソフトウエアを処理しながら、同一の命令スト
リームを実行する。前記3つのCPUが同一の命令スト
リームを実行しない唯一の時は、起動時の自己検査、診
断等の処理を行う場合である。
【0021】前記3つのCPUは、ここではそれぞれメ
モリ―#1およびメモリ―#2とも言う2つのメモリモ
ジュール14、15に接続されており、該メモリモジュ
ール14、15は、各々、同一のアドレススペースに同
一のデータを記憶している。好ましい実施例において、
各前記CPU11、12、13はローカルメモリ16を
有し、該ローカルメモリ16は、対応するCPUによっ
てのみアクセス可能になっている。
【0022】各前記CPU11、12、13および各前
記メモリモジュール14、15は、自己のクロック発振
器17を有する。すなわち、前記CPU11、12、1
3は、単一のクロックに基づいた“ロックステップ”で
動作するのではなく、以下に詳しく述べるように、“疎
結合”によって同期されるようになっている。外部割り
込みは、各前記CPUからの割り込み要求およびステー
タスを他の2つのCPUに対して接続するための1組の
バスを使用する技術によって、前記3つのCPU間で同
期される。つまり、各前記CPU−A、CPU−Bおよ
びCPU−Cは、自己の割り込み要求および他のCPU
から受け取る2つの割り込み要求である合計3つの割り
込み要求に応答して、同一のクロックサイクルで各CP
Uに対して割り込み要求を発するものである。
【0023】前記CPU−Aは、バス21によって前記
メモリ―#1モジュール14およびメモリ―#2モジュ
ール15に接続されており、CPU−Bは、バス22に
よって前記メモリ―#1モジュール14およびメモリ―
#2モジュール15に接続されており、CPU−Cは、
バス23によって前記メモリ―#1モジュール14およ
びメモリ―#2モジュール15に接続されている。各前
記バス21,22,23は、多重化されたアドレス/デ
ータバス、コマンドバス、ならびに、アドレスストロー
ブおよびデータストローブのための制御線を含んでい
る。各々の前記CPUはこれらのバス21,22,23
を個々に制御するものであり、従って、アービトレーシ
ョン、すなわち、バス要求およびバス許可は存在しな
い。
【0024】各前記メモリモジュール14,15は、そ
れぞれのI/Oバス24または25に接続されており、
各前記バス24または25は、2つ(または3つ以上)
のI/Oプロセッサ26,27に接続されている。ま
た、このシステムは、特定のシステム構成のために必要
なI/O装置を設ける必要性に応じて、多数のI/Oプ
ロセッサを備えていてもよい。各前記I/Oプロセッサ
26,27は、VMEバス(登録商標)のような標準的
な構成のバス28に接続されており、各前記バス28
は、標準的なI/Oコントローラ30とのインターフェ
ースを行うための1つまたは2つ以上のバスインターフ
ェースモジュール(BIM)29に接続されている。
【0025】前記I/Oプロセッサ26,27は、前記
メモリモジュール14,15を介して、前記CPU1
1,12,13によってアドレス可能であり、また、前
記メモリモジュール14,15を介して、前記CPU1
1,12,13に対して割り込み信号を送ることが可能
になっている。前記I/Oコントローラ30によって作
動される典型的な周辺装置は、ディスクドライブ、CR
Tスクリーンおよびキーボードを備えた端末、ならび
に、ネットワークアダプタである。また、前記I/Oコ
ントローラ30は、データブロックを伝送するために、
前記メモリモジュール14,15に対して直接メモリア
クセス(DMA)タイプのメモリ参照を行うことができ
る。各前記I/Oプロセッサ26,27等は、バス要
求、バス許可のために、各前記メモリモジュール14,
15に直接接続された個々の線を有する。このような二
点間接続は、以下において“放射(RADIALS)”と言
い、1グループの放射線31を介して行われる。
【0026】なお、図1のアーキテクチャから理解され
るように、前記CPUの外部動作、すなわち、前記CP
Uとは別個にクロックされるモジュールまたは装置に対
する動作であって、ここではI/O動作と言う動作は、
前記メモリモジュール14,15を通して行われる。こ
れらのメモリモジュール14,15は、前記3つのCP
UによるI/O要求についての、ボーティング、すなわ
ち、比較多数決処理を行う。しかし、前記CPUによる
I/O要求が、すべてのCPUに関連するグローバルメ
モリを通ることなく直接的に外部装置に送られる場合、
その他のアーキテクチャを使用してもよい。いずれにせ
よ、このようなCPUによるI/O要求は、適当なボー
ティング回路によってボーティングされることになる。
【0027】システムステータスバス32は、各CPU
11,12,13、各メモリモジュール14,15およ
びその他の各要素に接続されている。このステータスバ
ス32は、現在、前記CPU、メモリモジュールおよび
I/Oプロセッサのいずれが該システムに属し、且つ、
適切に動作しているか、についての情報を提供するもの
である。
【0028】前記3つのCPU11,12,13と2つ
のメモリモジュール14,15とを接続しているアクノ
リッジステータスバス33は、前記CPUによってI/
O要求がなされ、メモリモジュール14,15によって
該I/O要求についてのボーティングがなされた時に、
前記メモリモジュール14,15が前記CPUに対して
アクノリッジ(確認)信号を送るために使用する、個々
のステータス線を有する。これと同時に、コマンドのス
テータス、および、該コマンドが正しく実行されたか否
かについてを報告する、ステータスフィールドが送られ
る。前記メモリモジュール14,15は、それぞれのグ
ローバルメモリに対して読み書きされるデータについて
のパリティチェックを行うだけではなく、該メモリモジ
ュールを通って前記I/Oバス24,25に対してやり
取りされるデータついてのパリティチェックをも行い、
また、コマンドの有効性をチェックする。さらに、前記
バス33のステータス線によって、これらのチェック結
果は前記CPU11,12,13に報告される。このた
め、エラーが発生した場合、そのエラーが発生した要素
を隔離するためのエラールーチンが開始されるようにな
っている。エラーが発生した要素の再結合処理を含むエ
ラー回復ルーチンは、Douglas E. Jewettらによって199
0年1月5日付けで出願され、本出願の譲受人に譲渡され
た米国特許出願No.07/461,250に開示されている。
【0029】両前記メモリモジュール14,15は、そ
れぞれのグローバルメモリに同一のデータを格納してお
り、すべてのメモリ参照動作を同時に二重に行う。ある
特定の時において、前記メモリモジュール14,15の
一方は主メモリモジュールとして指定され、他方はバッ
クアップメモリモジュールとして指定される。前記主メ
モリモジュールおよびバックアップメモリモジュールが
同一の処理を実行し続けることができるよう、バス34
は、前記主メモリモジュールからバックアップメモリモ
ジュールに制御情報を送る。起動時において、いずれか
一方の前記メモリモジュールが主メモリモジュールとし
ての役割を果たすことができるようになっており、動作
中において、その役割は、ソフトウエアによる制御の下
に切り換えられるようになっている。前記役割は、所定
のエラー状態が前記CPUによって、または、該システ
ムにおけるその他のエラー応答要素によって検出された
ときにも、切り換えられるようになっている。
【0030】前記CPU内で発生された一定の割り込み
信号も、前記メモリモジュール14,15によってボー
ティングされる。前記CPUがこのような割り込み条件
に遭遇したとき(且つ、機能の一時機能停止していない
とき)、前記CPUは、割り込みバス35のそれぞれの
線を介して、前記メモリモジュールに対して割り込み要
求信号を出力する。こうして、前記3つのCPUからの
3つの割り込み要求がボーティング可能になる。このよ
うな割り込み要求信号のボーティングは、前記CPUの
動作をチェックする機能をも果たす。前記3つのCPU
は、CPU間バス18を介して、ボーティングされたC
PU割り込み信号を同期し、各前記CPUにおける共通
のクロックサイクルで、前記割り込み信号を各前記CP
Uに送る。この割り込み同期は、前記CPUを一時機能
停止させることなく実行される。前記メモリモジュール
14,15によって行われるボーティング、および、I
/Oプロセッサ26,27についてのより詳細な説明
は、Charles E. Peet,Jr.らに対して1992年9月8日付け
で付与され、本出願の譲受人に譲渡された米国特許No.
5,146,589に開示されている。
【0031】CPUモジュール:図2には、前記CPU
モジュール11,12,13のうちの1つが、より詳細
に示されている。好ましい実施例において、前記3つの
CPUのすべては同一の構成を有するので、ここでは、
CPU−Aについてのみ説明する。コストを競争可能範
囲内に抑えるため、且つ、既に開発されているソフトウ
エアおよびオペレーティングシステムに対するアクセス
を容易にするため、市販のマイクロプロセッサチップを
使用するのが好ましく、また、多数のデバイスのいずれ
を選択してもよい。前記リスク(RISC)アーキテクチャ
はいくつかの性能上の利点を有するが、Motorola 68030
デバイスまたはIntel 80386デバイスもしくはIntel 804
86のような、より通常のシスク(CISC:Complex Instru
ction Set)マイクロプロセッサを使用してもよい。高
速のRISCマイクロプロセッサは、いくつかの供給源から
入手可能である。例えば、Motorola、MIPS Computer Sy
stems Inc.、Sun Microsystems、および、Cypress Semi
conductorは、すべて、様々な設計を有する高性能RISC
マイクロプロセッサを製造している。
【0032】図示例におけるCPUボードすなわちCP
Uモジュールは、好ましい実施例では前記MIPS Compute
r Systems Inc.によって設計されたR4000デバイスであ
るマイクロプロセッサ40を使用している。前記R4000
デバイスは、RISCアーキテクチャを使用した64−ビット
プロセッサであり、100メガヘルツのクロックレート
で高い性能を実現するものである。内部で使用される1
00メガヘルツのクロックは、前記マイクロプロセッサ
40がローカル発振器17から例えば50メガヘルツの
クロック信号を受け取り、該クロック信号を逓倍するこ
とによって得られる。また、前記CPUモジュールの残
りの部分をクロックするために使用される25メガヘル
ツのクロック信号は、前記100メガヘルツのクロック
信号を例えば25メガヘルツに分周することによって得
られる。なお、このプロセッサにおいて、それが可能で
あれば、より高いクロック速度、および、他の性能を向
上させるための特徴が利用されてもよい。このデバイス
の他の例として、より遅いクロックス速度でのコスト削
減を可能にするR3000等を使用してもよい。前記プロセ
ッサ40は、さらに、内部の整数浮動小数点用コプロセ
ッサおよび内部キャッシュ(図示せず)を有する。な
お、ここでは、各前記CPUについて1つのマイクロプ
ロセッサ40のみが示されているが、1つの論理ユニッ
トとして並列的に動作する2つ以上のマイクロプロセッ
サ40が設けられていてもよい。さらに、以下に述べる
同期技術も、この種のマルチプロセッサCPUシステム
に使用されるのに適している。
【0033】前記プロセッサ40は、多重化されたアド
レス/データバス41および制御バス43を有するロー
カルバスに接続されている。好ましくは、外部キャッシ
ュメモリ45が設けられており、該外部キャッシュメモ
リ45は、図2において個別に示されているアドレスバ
ス、データバスおよび制御バスを有する個別バス44を
介して、前記プロセッサ40に接続されている。前記ロ
ーカルバス41,43は、プロトコル変換回路50を介
して、内部制御論理バス(CLB)構造に接続されてい
る。より詳しくは、図3を参照して後で詳述する前記プ
ロトコル変換回路50は、データバス53、アドレスバ
ス54および制御バス55を有する前記制御論理バス構
造に接続されている。ローカルメモリ16はこの内部バ
スによってアクセスされ、該内部バスに接続されたバス
インターフェース56は、システムバス21(他のCP
Uではバス22または23)にアクセスするために使用
される。前記内部バスのデータバス53およびアドレス
バス54(前記プロセッサ40のバス41から派生す
る)は、前記システムバス21の多重化されたアドレス
/データバス57に変換されており、これに対応して、
コマンド線および制御線も、この外部バスのコマンド線
58および制御線59に変換されている。また、前記バ
スインターフェース56は、前記メモリモジュール1
4,15からのアクノリッジ/ステータス線33を収容
している。これらの線33において、分離したステータ
ス線33−1または33−2は前記メモリモジュール1
4,15から接続されており、これにより、後述するよ
うに、両前記メモリモジュール14,15からの応答
は、前記CPUとグローバルメモリとの間のデータ伝送
(読出しまたは書込み)イベント直後に評価され得るよ
うになっている。
【0034】好ましくは、前記ローカルメモリ16は、
前記CPUモジュールのクロックサイクルの約3サイク
ル(例えば25メガヘルツ)内にアクセス可能なダイナ
ミックRAMである。このアクセスは、この実施例では
上述のごとく100メガヘルツとすることができる、前
記プロセッサ40のクロックと同期する。前記ローカル
メモリ16は、メモリ制御回路60によってアクセスさ
れるものである。該メモリ制御回路60は、多重化アド
レス機能を有するダイナミックRAMである場合、通常
そうであるように、前記アドレスバス54からのアドレ
スおよび前記制御バス55からのアドレスストローブを
受け取り、しかる後、行アドレス信号(RAS)および
桁アドレス信号(CAS)を発生する。
【0035】データは、データバス53を介して、前記
ローカルメモリ16に対して読み書きされる。さらに、
前記ローカルメモリ16は、ダイナミックRAMである
が故に、定期的なリフレッシュを必要とする。リフレッ
シュタイマ71は、後で詳述するように、このようなリ
フレッシュ動作を制御するメモリ制御回路60に対して
リフレッシュ要求信号を与えるものである。さらに、前
記オペレーティングシステムによって使用可能な、不揮
発性RAMのような不揮発性メモリ62および高速PR
OM63、ならびに、いくつかのローカルレジスタ61
は、前記内部バスによってアクセスされる。該レジスタ
メモリのあるものは電源投入時のみに使用され、また、
あるものは、前記オペレーティングシステムによって使
用され、内部キャッシュまたはキャッシュ45に連続的
に設けられてよく、また、その他の部分は前記メモリマ
ップの非キャツシュ部分に設けられてよい。
【0036】外部割り込み信号は、前記プロトコル変換
回路50を介して、図2のCPUモジュール内の割り込
み回路65から前記プロセッサ40に与えられる。前記
プロセッサ40によって割り込みが実行される前に、前
記3つのCPUのすべてに対して同一の割り込み信号が
与えられたか否かを判定するために、すべての割り込み
信号は前記割り込み回路65でボーティングされるよう
になっている。この目的のため、前記割り込み回路65
は、他の2つのCPU12,13からの割り込みペンデ
ィング入力66を受け取り、線67を介して、前記他の
2つのCPU12,13に対して割り込みペンディング
信号を送る。これらの線は、3つのCPU11、12、
13同士を接続しているバス18の一部である。また、
他の種類の割り込み信号、すなわち、例えば、CPUが
発生した割り込み信号についてのボーティングを行うた
めに、前記割り込み回路65は、バス35の線68を介
して、このCPUからの割り込み要求を両前記メモリモ
ジュール14、15に送り、線69、70を介して、該
メモリモジュール14、15から個別にボーティングさ
れた割り込み信号を受け取る。両メモリモジュール1
4、15は、実行すべき外部割り込みを与える。例えば
I/Oチャンネル28の1つを介してキーボードまたは
ディスクドライブのような外部割り込み源で発生した割
り込み信号は、後述するように各CPU11、12、1
3が同一のクロックサイクルとなるまでは、割り込み回
路65から前記プロセッサ40に与えられない。
【0037】図2に示すように、前記割り込み回路65
は、クロックサイクルカウンタ51からクロックカウン
タ出力CC―4およびCC―8を受け取る。該カウンタ
51は、クロック信号をカウントすることにより、図1
5〜図19を参照して後で詳述する外部割り込み同期の
ために使用されるカウント値を出力する。カウンタ51
に対する入力によって示されているように、該カウンタ
51は、後述するクロックドリフト除去処理の完了後に
発せられる解放信号を受け取った時に可能化(イネーブ
ル化)され、ドリフト除去レジスタ読み取りスタート信
号受け取った時に不能化(ディスエーブル化)される。
このように、前記クロックサイクルカウンタ51は、後
述するクロックドリフト除去処理の間、および、すべて
のCPUが動作している間、可能化されることによって
クロックサイクルをカウントする。
【0038】さらに図2に示すように、前記CPUモジ
ュールは、CPU同期論理回路73を備えている。この
CPU同期論理回路73は、CPU間バス18を介して
他のCPUに接続されている。また、前記メモリモジュ
ールによってバスインターフェース56に与えられる確
認信号は、前記プロセッサ40に直接送られることな
く、前記同期論理回路73に送られる。こうして、該同
期論理回路73は、前記プロセッサ40に送るべき解放
信号をバスインターフェース56に与える。この同期論
理回路73については、図4、図5および図6に関して
後で詳述する。前記プロセッサ40は、メモリ対メモリ
命令を支持しないがメモリ対レジスタまたはレジスタ対
メモリ命令(すなわち、ロード命令またはストア命令)
のみを支持するリスク命令セットを有する。頻繁に使用
されるデータおよび現在実行中のコードをローカルメモ
リまたはキャッシュに保持することが重要である。従っ
て、ブロック伝送動作は、前記バスインターフェース5
6に接続されたDMAステートマシーン74によって行
われる。前記プロセッサ40は、コマンドとして機能す
べきワードを前記DMA回路74の1つのレジスタに書
き込み、前記ブロックのスタートアドレスおよび長さを
前記DMA回路74のレジスタに書き込む。1つの実施
例において、前記DMA回路74が引き継いでブロック
伝送を実行し、必要なアドレス、コマンドおよびストロ
ーブをバス53〜55および21に出力している間、前
記マイクロプロセッサはその動作を一時停止する。この
ブロック伝送を開始するために前記プロセッサ40によ
って実行されるコマンドは、前記DMA回路74の1つ
のレジスタから読み出すことができる。Unixオペレーテ
ィングシステムにおけるメモリ管理は、要求時ページン
グに依存しているので、これらのブロック伝送は、しば
しば、グローバルメモリ、ローカルメモリおよびI/O
トラフィック間で移動中のページである。前記バス2
1、22、23は、前記CPUとグローバルメモリとの
間における1ワードの読出し伝送および書込み伝送を支
持するが、ここで言うブロック伝送は、ローカルメモリ
とグローバルメモリとの間でのみ可能である。
【0039】図3には、前記プロトコル変換回路50が
ブロック図で示されている。該プロトコル変換回路50
は、前記多重化されたアドレス/データおよびアドレス
/データバス41と制御バス43との間のコマンドプロ
トコルを翻訳する。前記アドレス/データバス41およ
び制御バス43は前記プロセッサ40と直接通信し、前
記制御論理バスのデータバス53、アドレスバス54お
よび制御バス55は、バスインターフェース56および
内部同期ボーティング回路65と通信する。前記バス4
1および43ならびに53〜55は、共に64ビット幅
のバスであるのが好ましいが、異なるデータ幅のもので
あってもよい。また、両前記バスは最大のCPUモジュ
ール速度でクロックされるのが好ましいが、バス53〜
55については分周されたクロックレートが使用されて
もよい。故に、前記プロトコル変換回路50は、グロー
バルメモリのブロックモードアクセスのためのデータ速
度補償を行うと共に、異なるビット幅のバスの間におい
てアドレスおよびデータの復号化を行う。
【0040】より詳しくは、図3に示すように、前記プ
ロトコル変換回路50は、アドレスバスプロトコルの変
換を行うためのシステムアドレスレジスタ75と、デー
タバスプロトコルの変換を行いデータバスバッファリン
グを行うためのデータレジスタ75とを有する。また、
コマンドレジスタ77は、制御バス43、45によって
与えられるコマンドのためのプロトコル変換およびバッ
ファリングを行うためのものである。さらに、前記シス
テムアドレスレジスタ75およびコマンドレジスタ77
は、キャッシュメモリに格納されたデータを無効にする
可能性があるローカルメモリに対する書込みを検出し、
前記プロセッサ40に対して、外部キャッシュ45(図
2)および該プロセッサ40の内部キャッシュを無効化
するよう命令する。
【0041】さらに図3に示すように、前記プロトコル
変換回路50は、前記プロセッサのアドレス/データバ
ス41に接続されたローカルメモリ検出アドレス復号回
路78を備えているのが好ましい。該ローカルメモリ復
号回路78は、前記システムアドレスレジスタ75およ
びコマンドレジスタ77を介して、前記プロセッサ40
からのメモリ要求信号を受け取る。該要求信号を完全に
復号する前に、前記ローカルメモリ復号回路78は、先
ず第1の警告信号、すなわち、“LM WARNING”をローカ
ルメモリ制御回路60に出力し、前記プロセッサ40に
よるローカルメモリアクセス要求を示す。前記プロセッ
サ40によるメモリ要求が前記ローカルメモリ復号回路
78によって復号され終わった後であって、且つ、ロー
カルメモリアクセス要求が確認されている場合、前記復
号回路78は、図3に示すように、ローカルメモリ制御
回路60に対して、ローカルメモリ動作信号“LM OP”
である第2の警告信号を出力する。図12、図13およ
び図14に関して後で詳述するように、これら第1の警
告信号および第2の警告信号、すなわち、LM WARNINGお
よびLM OPは、前記ローカルメモリ制御回路60によっ
て、ダイナミックRAM16のローカルのメモリリフレ
ッシュのタイミングを制御することによって該リフレッ
シュ動作を前記プロセッサ40から隠蔽するために使用
される。
【0042】さらに図3に示すように、前記プロトコル
変換回路50は、データ解放回路80を備えている。後
で詳述するように、各々のCPU間での同期処理が完了
後、前記グローバルメモリまたはI/O装置からのデー
タ読み取り処理が終わった後において、バスインターフ
ェース回路56からの解放信号に応答して、該データ解
放回路80は、前記プロセッサ40に対してストローブ
信号を与える。これと同じ解放信号は、前記CPUボー
ド上のローカルメモリまたはいずれかのレジスタからの
読み出し後にも、与えられる。これは、前記ドリフト除
去スタートレジスタからの読み出しをも含む。
【0043】CPUの同期:図4、図5および図6に
は、CPU同期論理回路73の好ましい実施例がブロッ
ク図で示されている。前記CPU間における様々な構成
要素の接続状態をより明確に示すために、前記3つのC
PUつまりCPU−A、CPU−B、CPU−Cの各々
についての同期論理回路は、図4、図5および図6に別
々に示されている。しかし、同期回路は各前記CPUご
とに同一であるので、各々のCPUの回路における同じ
構成要素には同じ符号が付されており、また、明確さの
ために必要な場合には、前記構成要素がどのCPUに関
係するものであるのかを示す“A”、“B”、“C”が
数字符号の後に付されている。
【0044】図4、図5および図6において、各CPU
の同期論理回路73は、該CPUのローカルクロック信
号を入力し、線101および102によって該クロック
信号を他のCPUに分配する。このようなクロック信号
を他のCPUに分配する前記線101および102は、
高度のフォールトトレランスを実現できるよう、独自の
ドライバ103、104を有するのが好ましい。すなわ
ち、前記ドライバ103、104の一方またはそれが接
続されている線がショートしたり故障したりした場合で
あっても、他方の線が、依然として正常に、前記ローカ
ルクロック信号を他のCPUに送り続け、これにより、
該コンピュータシステムは、2つのCPUによって動作
し続けることがてきる。
【0045】図4、図5および図6にさらに示すよう
に、各前記CPUは、そのローカルクロック信号をロー
カルカウンタ106にも与える。該ローカルカウンタ1
06は、クロックイネーブル論理回路108によって可
能状態にされたときに、ローカルクロックサイクル17
をカウントする。前記クロックイネーブル論理回路10
8は、I/O動作の開始を示すローカルプロセッサ40
からのI/O要求信号を入力する。その後、前記クロッ
クイネーブル論理回路108がローカルカウンタ106
にイネーブル信号を出力し、これにより、該ローカルカ
ウンタ106によるローカルクロックパルスのカウント
がスタートする。また、前記クロックイネーブル論理回
路108は、独立したフォールトトレラントドライバ1
13、114を使用したそれぞれの線110、111を
介して、他のCPUにもイネーブル信号を出力する。
【0046】さらに、各前記CPUの同期論理回路73
は、他の2つのCPUからクロック信号およびクロック
イネーブル信号をそれぞれ入力する第2のカウンタ11
5および第3のカウンタ116を備えている。こうし
て、例えば、CPU−Aのカウンタ115は、線101
−Bを介してCPU−Bからのクロック信号を入力し、
線110−Bを介してCPU−Bからのクロックイネー
ブル信号を入力する。また、CPU−Aの第2のカウン
タ116は、線102−Cおよび111−Cを介してC
PU−Cからのクロック信号およびクロックイネーブル
信号をそれぞれ入力する。
【0047】このように、前記CPU−Aは、そのロー
カルクロックサイクルをカウントするローカルカウンタ
106、CPU−Bからのクロックサイクルをカウント
するカウンタ115およびCPU−Cからのクロックサ
イクルをカウントするカウンタ116を使用している。
これらのカウンタは、ある特定のI/O動作中各前記C
PUにおけるクロックサイクルの数を測定するために使
用される。このように、各前記CPUは、各CPUによ
って実行されるI/O動作中、該CPUのローカルクロ
ック、および、他の2つのCPUからのクロック信号を
カウントする3つのカウンタ(3つのCPUからなる好
ましい実施例では3つ)有する同期論理回路を使用して
いる。
【0048】前記I/O動作がボーティングされ、完了
すると、前記グローバルメモリによってバスインターフ
ェース56に対して確認信号(ACK)が与えられる(図
2)。バスインターフェース56は、前記プロセッサ4
0に対してではなく、CPUの同期論理回路73に対し
て前記確認信号を送る。このようにして、前記I/O動
作の終了は、前記グローバルメモリからの確認信号によ
って、各前記CPUの同期論理回路に対して同時に知ら
される。その後、クロックの整列度およびクロックの準
安定度に応じて、すべてのCPUにおける前記同期論理
回路は、典型的には、相互に1サイクルの範囲内で、こ
の信号を受け取る。この確認信号は、各前記CPUの同
期論理回路73のクロックイネーブル論理回路108に
与えられ、該イネーブル論理回路108では、他のCP
Uに分配するクロックイネーブル信号をオフする。この
イネーブル信号のオフにより、前記複数のカウンタは、
それぞれのカウント値を保持し、自己のクロックを用い
て、この静止したカウント値をサンプルできることにな
る。
【0049】好ましい実施例において、図7に関して後
で詳述するように、各前記CPUの同期論理回路73
は、カウントイネーブル信号がオフされた後に2クロッ
クサイクル待って、前記カウンタのカウント値をサンプ
ルする。前記クロックイネーブル信号は、これら2クロ
ックサイクルの間および中間クロックにおいてサンプル
され、これら3つのイネーブルサンプルは、エラーボー
ト論理回路122に送られる。後で詳述するように、こ
れらのイネーブルサンプルは、前記エラーボート論理回
路122によって、カウントの有効性を確かめるために
使用される。こうして、各前記CPUにおける前記I/
O動作のクロックサイクルによる長さは、比較論理回路
118によって比較される。該比較論理回路118で
は、前記3つのカウンタ106,115,116の出力
を比較することによって、前記I/O動作を実行するた
めにどのCPUが最大のクロックサイクル数を要したか
を判定する。そして、前記最大のクロックサイクルカウ
ント値とローカルカウンタ106によるカウント値との
差が、単純な減算処理によって算出される。この最大の
クロックサイクルカウント値とローカルカウンタ106
によるカウント値との差、つまり、“待ちカウント値”
は、前記I/O動作が前記最大カウント値を要したCP
Uと同数のクロックサイクルを有するまで前記CPUが
待たなければならない、クロックサイクル数を示すもの
である。この待ちカウント値は、線120を介して前記
比較論理回路118からローカルカウンタ106に送ら
れる。
【0050】前記ローカルカウンタ106はロード可能
なものであり、前記待ちカウント値は該ローカルカウン
タ106にロードされ、これと同時に、該カウンタ10
6は、イネーブル状態にされることによって、カウント
値がゼロになるまで、各クロック当たり1ずつそのカウ
ントをデクリメントし始める。前記待ちカウント値がロ
ーカルカウンタ106によってゼロになるまでデクリメ
ントされ終わると、前記プロセッサを解放し、I/O動
作によって要求されるデータを受け入れ可能にするため
に、線121によって、前記バスインターフェース56
およびプロトコル変換回路50を介して、前記ローカル
プロセッサ40に対して、解放信号が送られる。出力動
作は上記と同じステップに従うが、前記解放信号はイン
ターフェース回路を解放するにすぎない。前記プロセッ
サは前記インターフェース回路が利用可能になるのを待
つために一時機能停止するかもしれないが、出力動作は
直接的には前記プロセッサを一時機能停止させない。
【0051】対応するローカルカウンタ106の出力が
前記3つのCPUのうちで最大のカウント値であると前
記比較論理回路118が判定した場合には、前記待ちカ
ウント値はゼロであり、従って、前記ローカルカウンタ
106は、前記プロセッサ40を前記I/O動作結果の
まま解放するために、直ちに、線121によって、プロ
トコル変換回路50を介して、前記バスインターフェー
ス56およびプロセッサ40に解放信号を送る。
【0052】前記比較論理回路118は、前記カウンタ
106,115,116からのカウント値を入力するリ
ードオンリーメモリ(ROM)の出力としての予想待ち
カウント結果をセットすることによって、直に実行され
てもよい。待ちカウント数を最小化し、且つ、性能に対
する影響を最小化できるよう、前記3つのCPUにおけ
るプロセッサ間の全体的なドリフト量は、所定のクロッ
クサイクル数に制限されるのが好ましい。例えば、前記
ドリフト量は、±32クロックサイクルに制限されてよ
い。このようなCPU間におけるクロックドリフトの制
限は、クロックサイクルをカウントし、例えば10ミリ
秒ごとの一定の間隔で線126によって割り込み信号を
発するタイマ125を使用することによって、実現可能
である。後で詳述するように、この割り込み信号は、ド
リフト除去同期回路124を介して前記CPU−A、C
PU−BおよびCPU−C間における累積したクロック
ドリフトを除去する、ソフトウエアルーチンを起動す
る。
【0053】さらに、前記比較論理回路118は、前記
カウンタ106,115,116用のモジュラー(ラッ
プアラウンド)カウンタを使用し、前記カウンタが相互
にラップアラウンド(循環)を有するか否かを判定する
ことによって、簡略化してもよい。例えば、前記カウン
タ106,115,116用に7ビットのモジュラーカ
ウンタが使用される場合、各カウンタは128カウント
までカウント可能である。故に、これら3つのカウンタ
のカウンタ出力値が、合計128のカウントクロック範
囲の略中間である64カウント範囲内である(すなわ
ち、前記カウンタの0または128のカウント範囲から
32カウントより少ない)場合、比較は直接的に行われ
る。しかし、前記範囲の始めと終わり近くでクラスタが
発生した場合、1つまたは2つ以上の前記カウンタが循
環したにちがいないということになる。この場合、前記
比較論理回路118は、比較を行う前に、循環したカウ
ント値(0近くのカウント値)に対して128を自動的
に加える。このため、前記比較論理回路118は、予め
計算された結果を格納したメモリ位置をそれぞれ供給す
るROMのアドレス線を介してカウント値を入力するこ
とによって、前記カウンタ106,115,116から
の減算結果およびその結果としての待ちカウント値を直
接出力するラップアラウンド減算器を、1つまたは2つ
以上のROMによって実現してもよい。また、代案とし
て、最大カウント値を選んだ後、この値をデクリメント
するよう前記ローカルカウンタ106を制御するコンパ
クトな論理機能を実行する、プログラマブル論理デバイ
ス(PLD)が使用されてもよい。
【0054】さらに図4、図5および図6に示すよう
に、各CPUの同期論理回路は、エラーボート論理回路
122を含んでいるのが好ましい。該エラーボート論理
回路122の動作は、図7に示すようなカウンタ11
5,116の好ましい実施例を考察することによって、
理解可能であろう。図7に示すように、前記カウンタ1
15,116は、クロックイネーブル信号(CLKEN)を
入力し、パイプライン・サンプルポイント127,12
8,129においてクロックイネーブルサンプル
“1”,“2”,“3”を出力するパイプライン構造を
使用するのが好ましい。また、各前記カウンタ115,
116は、カウンタ130を含んでいる。前記カウンタ
が出力する2つの分離したサンプルS1およびS2は、
前記カウンタ130のカウント値をサンプルするサンプ
リング回路131,132によって提供される。そし
て、これらのサンプルは、マルチプレクサ133を介し
て前記比較論理回路118に出力される。こうして、各
前記カウンタ115,116は、前記エラーボート論理
回路122に対して3つのクロックイネーブルサンプル
を送ると共に、前記比較論理回路118に対して2つの
カウンタサンプルを送る。前記待ちカウント値判定にど
のサンプルを使用すべきかは、前記比較論理回路118
にその旨指示するエラーボート論理回路122によって
決定される。
【0055】各CPUのエラーボート論理回路122
は、他の2つのCPUの各々がそのカウント値を信用す
るのに十分な程度同期しているか否かを判定する。フォ
ールトトレランスを確実にするため、常時、2つの正常
なプロセッサが独立に同じ決定をし、同期していなけれ
ばならない。前記エラーボート論理回路122は、図7
に示すように、3つのクロックイネーブルパイプライン
サンプルを使用して、エラー判定を行う。
【0056】より詳しくは、前記2つのカウンタの“ス
ナップショット”を一緒に取り扱う前記3つのサイクル
の間、対応するクロックイネーブルがオフした場合、前
記エラーボート論理回路122は、前記カウンタサンプ
ルが有効であると判定する。前記イネーブルが実際にオ
フした場合、前記カウント値は安定し、両サンプルは有
効カウントとなる。いずれかの前記クロックイネーブル
サンプルについて、前記エラーボート論理回路122が
表明すべきイネーブル信号を検出した場合、前記カウン
ト値は疑わしいものとなる。
【0057】この判定から、次のような4つのケースが
発生することが考えられる。
【表1】
【0058】上記表は、3ビットの“クロックイネーブ
ル”パイプラインについての8つの組合わせを示してい
る。前記イネーブルは、時間1でサンプルされ、そして
再び、時間2および時間3でサンプルされる。前記カウ
ンタサンプルは、前記“クロックイネーブル”パイプラ
インの第1のサンプルおよび第3のサンプルと一致す
る。しかし、前記“クロックイネーブル”は、前記カウ
ンタを同期制御するために使用され、また、前記クロッ
クイネーブルパイプラインによって非同期的にサンプル
されるので、1クロックサイクル(クロックの立下が
り)の最中に状態を変化する。前記表1は、さらに、こ
れらの値に基づいてなされる判定を示している。
【0059】ケース1およびケース4は、明確な結果を
示している。つまり、前記カウンタのスナップショット
は、明らかに、ケース1ではに有効であり、ケース4で
は有効ではない。前記エラーボート線はそれ自身が故障
する可能性があるので、これらのケースではこれを見な
い。ケース2およびケース3では、前記エラーボート論
理回路は、該回路が1つの有効なサンプルを有し、該サ
ンプルを比較に使用可能である旨判定する。しかし、そ
のCPUからのカウント値を含むすべての信号は、疑わ
しく、信用できない。この問題を解決するために、前記
エラーボート論理回路は、内部CPUバスの一部を構成
するエラーバス107により、前記CPU間に分配され
た“ボートエラー”信号を使用する。すなわち、前記C
PUエラーボート論理回路122は、疑わしくないCP
Uからのボートエラー信号をチェックする。該CPUと
他のCPUとの間のクロック差により、前記他のCPU
は使用可能なスナップショットを有していないかもしれ
ない。前記他の疑わしくないCPUがそのボートエラー
信号をハイ状態に駆動し、有効なレジスタサンプルを有
さない旨示した場合、前記エラーボート論理回路122
はそのサンプルも使用しない。しかし、そうでないない
場合には、前記エラーボート論理回路122は、その有
効なスナップショットを比較に使用する。いずれにせ
よ、エラーステータス情報は、バスインターフェース5
6を介して、バス21によって通知される。
【0060】両前記CPUが疑わしいものである場合、
その判定をしたCPUは故障したユニットであり、それ
がどのような判定を行うのかは重要ではない。前記他の
CPUは、このCPUを無視するボーティングを行い、
同期状態のまま動作を続行する。前記エラーボート論理
回路122は、プログラマブル論理デバイス(PLD)
によって前記表1の判定結果を実行するのが好ましい。
【0061】図8には、ドリフト除去同期論理回路12
4を介して、前記クロックドリフト除去同期動作を開始
する前記ソフトウエアルーチンが示されている。図4、
図5および図6に関して上述したように、タイマ125
は、線126を介して、図8のクロックドリフト除去ル
ーチンを開始するための割り込み信号を、定期的に発す
る。前記タイマ125は、例えば32クロックサイクル
である所望の範囲を超えるクロック除去を防止するのに
十分な頻度の割り込み信号を出力するようになってい
る。例えば、10ミリ秒タイマ125が適当である。し
かし、許容可能なクロックサイクルドリフト量、およ
び、特定のシステムに関するクロックサイクルドリフト
量に応じて、前記タイマ125は調節されてよい。
【0062】好ましくは、前記タイマ125は、タイム
アウト時に、高い優先度の割り込み信号を出力する。こ
の高優先度の割り込み信号は、各前記CPU―A、CP
U―B、CPU―Cにおける、同一のクロックサイクル
であるが、異なる実時間時点において発生されることに
なる。この高優先度の割り込み信号は、カーネルコード
に基づき、図8のルーチンを呼出す。このルーチンは、
前記CPUにおいてペンディング中のすべての処理を完
了させ、各前記CPUの同期回路124に対して、ドリ
フト除去動作を行うよう指示するものである。これは、
各前記CPUに異なる長さの機能一時機能停止を課す前
記同期回路124に与えられる、特別の読出し命令を使
用することによって実現されるのが好ましい。図9およ
び図10に関して後で詳述するように、この同期が完了
すると、各前記CPUは、実時間に関して略整列したク
ロックカウントを開始することになる。
【0063】より詳しくは、図8においてステップ14
0では、前記タイマ125からの割り込み信号に応答し
て、前記CPUのレジスタの状態をセーブする。その状
態をセーブすべき特定のレジスタは、特定のCPUが割
り込み処理する方法に応じて決まる。あるCPUにおい
ては、このステップは省略してよい。次に、ステップ1
44において、前記割り込み信号が前記同期用のタイマ
125(図4、図5および図6)によって発生されたも
のであるか否かを判定する。該ステップ144は、例え
ば、前記割り込み信号の発生源を確認するために、割り
込み原因レジスタを調べることからなっていてよい。該
ステップ144では、前記割り込み原因判定の結果に応
じた分岐がなされる。前記割り込み信号が前記同期用の
タイマ125からではない場合、このルーチンは通常の
割り込み処理を行う。このような場合、図15〜図19
に関して後述する方法で、前記割り込み信号はクロック
カウントに予め整列されている。ステップ144におい
て、前記割り込み信号が前記同期用のタイマ125から
であると判定された場合、このルーチンはステップ14
6に進む。
【0064】ステップ146では、前記ルーチンは、前
記CPUに対して、各CPUのプロセッサ40(図2)
によって現在実行されているすべての処理を完了するよ
う指示する。ステップ146におけるこれらの命令によ
り、各前記プロセッサ40で処理されている命令ストリ
ームは、先に進行する前に、現在の処理が完了するのを
待つ。例えば、MIPS Computers Inc.,によって設計され
た図2に関して上述したR4000は、並列的に処理動作
(浮動小数点処理および固定小数点乗算/除算処理)可
能な2つの分離したユニットを有する。このようにし
て、図8のステップ146におけるR4000に対する適当
な命令は、(1)すべての浮動小数点処理を終了する命
令、および(2)すべての整数乗算/除算処理を終了す
る命令を含むことになる。ステップ146においてすべ
てのペンディング中の処理を完了する命令が前記プロセ
ッサ40に送られた後、このルーチンはステップ148
に進む。 ステップ148では、好ましい実施例におい
て、前記プロセッサバスが同期ルーチンの間要求されな
いよう、前記割り込み信号は前記プロトコル変換回路に
よって不能化される。図8のステップ150では、前記
同期ルーチンは、タイマ125をクリアし、該タイマ1
25に対するカウント入力を不能化する。このルーチン
は高優先度に応答する場合以外に呼出されるので、タイ
マ125をクリアすることによって、図8に示された異
なる長さの一時機能停止の間にタイムアウトしないこと
が保証される。
【0065】ステップ152では、このドリフト除去同
期ルーチンは、前記同期回路124(図4、図5および
図6)によるドリフト除去同期処理を開始するための、
特別読出しコマンドを発する。図8のステップ152に
おいて、この特別読出しコマンドは、ドリフト除去処理
を開始する“同期レジスタ読出し”として示されてい
る。ステップ154において、このルーチンは、同期回
路124によって前記ドリフト除去同期処理が完了され
るまで、他のすべての外部の可視イベントおよび制御可
能イベントを一時機能停止させる。
【0066】ステップ156の判定処理に示すように、
前記同期回路124から解放信号が入力されたことが検
出されるまで、前記同期ルーチンは、すべての命令の実
行一時機能停止を維持する。前記同期回路124から解
放信号が入力されたことが検出されると、このルーチン
は、ステップ158において前記割り込み信号を再び可
能化し、前記タイマ125が、クリアされ再び可能化さ
れる。最後に、ステップ160において、前記CPUが
クロックサイクルのみならず実時間に関しても整列した
状態で、前記命令ストリームが再開される。
【0067】図9には、前記同期回路124の好ましい
実施例がブロック図で示されている。さらに、図10に
は、CPU―Aが最も速い発振器を持つCPUであると
仮定した場合における、図9の線SYNC_A、SYN
C_B、SYNC_Cにおける信号のタイミングを示す
図である。図9および図10において、図8のソフトウ
エアによる同期ルーチンの同期レジスタ読出しステップ
152が完了すると、その命令は、復号され、前記同期
回路124の同期レジスタ162に与えられる。該同期
レジスタ162に与えられる同期レジスタ読出し命令の
復号によって、前記同期レジスタの出力は例えばローか
らハイに変化し、該出力は、図1に示したCPU間バス
18の一部を構成する同期バス105に与えられる。例
えば、図9に示した回路がCPU―Aに対応するもので
ある場合、前記同期レジスタ162の出力は、同期バス
105のSYNC_A に与えられる。CPU―Bおよ
びCPU―Cにおける対応する同期回路の同期レジスタ
の出力は、SYNC_BおよびSYNC_Cにそれぞれ
接続される。このように、前記CPU―Aの発振器が前
記3つのCPUの中で最も速いと仮定した場合、前記S
YNC_Aの出力変化が、SYNC_Aに最初に現れ
る。SYNC_Aによるこの出力は、各前記CPUの同
期ボーティング回路164に送られる。
【0068】図9に示すように、前記同期ボーティング
回路164は、入力端子A、B、Cにおいて、各前記C
PUからの同期信号をそれぞれ入力する。これらの入力
は、前記SYNC_A、SYNC_BおよびSYNC_
Cによって与えられるパルスを、該信号を入力するCP
Uのローカルクロックに整列させるクロック整列回路1
66、167を介して与えられる。例えば、準安定性を
除去し、前記入力を前記ローカルクロックに整列させる
ために、前記クロック整列回路166、167に対応す
る、前記ローカルクロックパルスを入力する1対のフリ
ップフロップを各線に設けてよい。
【0069】最初の同期パルスが前記同期ボーティング
回路に入力された後、該回路は、同期バス105による
次の同期パルスを入力可能状態になる。図10に示すよ
うに、次の同期パルスはSYNC_Cからのものであ
り、前記ボーティング回路では、線168によって、タ
イマ170をスタートするためのタイマスタート信号を
出力する。該タイマ170は、前記CPU間で許容され
るドリフトに対応する所定数のクロックパルスで、カウ
ントするよう設定されている。例えば、上述のごとく前
記CPUを32クロックサイクルのドリフト範囲内に維
持したい場合、前記タイマ170は、32クロックパル
スで、または、好ましくは、わずかなクロック不整列を
許容するためにこれより数クロックカウント多いクロッ
クパルスで、タイムアウトするよう設定してよい。前記
タイマ170が前記カウント値に達すると、線172に
よって、前記同期ボーティング回路に対してタイムアウ
ト信号が送られる。
【0070】前記同期ボーティング回路が2番目の同期
パルスを入力すると、該ボーティング回路は、3番目の
同期パルスが前記タイマ170によって設定された時間
リミット内に入力された否か、または、最初にタイムア
ウトが発生したか否かを判定するために待ち。前者の場
合、3つのCPUのすべてが例えば32クロックサイク
ルである許容可能なクロックドリフトの範囲内というこ
とになり、前記ボーティング回路は、前記命令ストリー
ムの処理を続行するために前記CPUを解放してもよ
い、と判定する。これは図10のタイミングチャートに
示されており、ここでは、3番目に発生する同期パルス
SYNC_Bはタイマ170のタイマアウトの前に発生
し、解放パルスは図示のように発生する。この解放パル
スは、同期ボーティング回路1624によって線を介し
て与えられて、同期レジスタ162をリセットし、ま
た、前記バスインターフェース回路56(図2)に与え
らる。こうして、該バスインターフェース回路56は、
プロトコル変換回路50を介して、前記プロセッサ40
に前記解放信号を与える。この同期ボーティング処理
は、前記3つのCPUにおいて同時に行われる。また、
前記解放は前記3番目に発生する同期パルス(図10の
例では、SYNC_B)によって同時に開始されるの
で、前記解放信号は、各前記CPUにおいて、1つまた
は2つのクロックサイクルの範囲内に発生されることに
なる。このようにして、各前記CPUは、解放されて、
実時間に関して1つまたは2つのクロックサイクルの範
囲内に整列された前記命令ストリームの処理を続行する
ことになる。
【0071】一方、前記同期ボーティング回路から前記
3番目に発生する同期パルスが入力される前に、前記タ
イマ170がタイムアウトした場合、前記解放信号は前
記2つの一時機能停止したプロセッサのみにおいて発生
され、前記回路は線176を介してエラー信号を発す
る。このエラー信号は、前記3つのCPUが、相互に、
前記許可されたクロックドリフトの範囲内にないという
ことを示し、エラー割り込みルーチンを開始する。従っ
て、前記同期回路124は、比較的簡単な構成により、
前記割り込み用のタイマ125(図4、図5および図
6)に応答して定期的に、前記3つのCPUを、実時間
に関して1つまたは2つのクロックサイクルの範囲内に
整列することができる。
【0072】ローカルメモリリフレッシュ制御:図11
〜図14には、前記ローカルメモリ16(図2)のリフ
レッシュ動作を制御するメモリ制御回路60およびリフ
レッシュタイ71の動作を説明するものである。図11
には、リフレッシュタイマ71がブロック図で示されて
いる。上述のごとく、前記ローカルメモリ16は、格納
したデータの損失を防止するために定期的にリフレッシ
ュされる必要のあるダイナミックランダムアクセスメモ
リ(DRAM)であるのが好ましい。このタイマ71
は、前記ローカルメモリ16に使用されるDRAMの特
定の設計仕様に応じて、前述のようなデータ損失を防止
するのに十分高速でリフレッシュがなされる、ことを保
証するものである。このため、前記リフレッシュタイマ
71は、線182によってそのカウント入力端子にクロ
ック信号カウンタ180を使用している。このカウンタ
180は、所望のリフレッシュ速度に応じた所定数のク
ロックサイクル後にタイムアウトするよう、設定されて
いる。このカウンタ180のタイムアウト信号は、線1
84を介して、第2のカウンタ186に出力される。該
第2のカウンタ186は、2つ以上のリフレッシュ要求
が前記ローカルメモリ16による実行を待ちながら“蓄
積”されるのを可能にする。該第2のカウンタ186
は、線184を介して、そのカウントアップ入力端子
に、カウンタ180からの出力を入力する。前記カウン
タ186のカウント値が0より大きい場合、該カウンタ
186は、その出力端子からリフレッシュ要求信号を出
力する。このローカルメモリリフレッシュが完了する
と、リフレッシュ完了信号がカウンタ186のカウンタ
ダウン入力端子に与えられ、該カウンタ186のカウン
ト値がデクリメントされる。
【0073】このようにして、前記第1のカウンタ18
0の幾つかのカウンタ出力は、第2のカウンタ186に
蓄積され、該カウンタ186のからの継続的なリフレッ
シュ要求出力が維持される。該リフレッシュ要求は、前
記リフレッシュ完了信号が前記第2のカウンタ186を
0にデクリメントした時に、終了される。これにより、
前記ダイナミックなローカルメモリを特定のDRAMの
仕様の範囲内に維持するために必要な数のリフレッシュ
を維持するために、便利な方法が提供される。図12、
図13および図14は、幾つかの異なるシナリオにおい
て、ローカルメモリ制御回路60によって行われるリフ
レッシュを説明するタイミングチャートである。
【0074】図12、図13および図14に示すよう
に、前記ローカルのクロック信号の他に、4つの信号が
ローカルメモリ制御回路60に与えられる。該4つの信
号は、前記制御回路60によってリフレッシュタイミン
グを制御するために使用される。より詳しくは、前記ロ
ーカルメモリ制御回路60は、前記プロセッサ40から
直接に第1の警告信号(VALID OUT)を入力する。図3
に関して上述したように、第2の警告信号(LM WARNIN
G)および第3の警告信号(LM OP)は、共に、前記プロ
トコル変換回路50から入力される。前記リフレッシュ
要求信号は、リフレッシュタイマ71から与えられる。
これらの信号は、ローカルメモリ制御回路60によっ
て、前記DRAMに対するタイミング信号を制御してリ
フレッシュを制御するために使用される。特に、前記ロ
ーカルメモリ制御回路60は次のような信号を発生す
る。
【0075】CAS ENABLE信号:CAS信号を可能化する
(ローカルメモリ16にインターリーブメモリバンクが
使用される場合、その代りに、該インターリーブメモリ
の2つのバンクのうちのどちらがローカルメモリ制御回
路60によってアドレスされるかを制御する偶数/奇数
タイミング信号が与えられる)。 CAS信号: DRAMにおける桁のアドレスを知らせるた
めに通常使用されるコラムアドレスストローブ信号。RA
S ENABLE信号。 RAS信号:前記DRAM内の行アドレスを選択するロー
アドレスストローブ信号。 図示されたリフレッシュ制御においては、RAS信号の前
に前記DRAMに対してCAS信号を与えることによっ
て、前記DRAMのリフレッシュが開始され、次に、RA
S信号に応答したリフレッシュが行われる。通常のDR
AM制御においては、メモリ読出しまたは書込みは、最
初にRAS信号そしてアドレスすべきDRAM内の行を特
定するアドレスを与え、次に、CAS信号そしてアドレス
すべき桁を特定するアドレスを与えて、前記DRAMの
アドレス空間のメモリ位置を特定することによって、行
われる。図12、図13および図14に示すようにRAS
信号の前にCAS信号を与えることによって、前記DRA
Mには、メモリ読出しまたは書込み動作とは異なる、リ
フレッシュ要求が通知される。しかし、他の設計のDR
AMが、異なる信号を使用してメモリリフレツシュを行
うようにしてもよく、従って、図示された信号は、現在
の通常の設計によるDRAMを組込んだ好ましい実施例
を単に例示するものにすぎない。
【0076】図12、図13および図14に示すリフレ
ッシュ制御タイミングを制御するためのタイミング信号
は、前記ローカルメモリ16が前記プロセッサ40によ
ってアクセスされていない時にのみ、ローカルメモリ1
6のリフレッシュが行われる、ということを保証するも
のである。このようにして、前記ローカルメモリ16に
対するアクセスを伴うプロセッサの実行サイクルは、決
して、リフレッシュのために一時機能停止されない。こ
のような一時機能停止は、各々のCPU間における様々
な潜在的な同期上の問題を発生する。
【0077】これは、前記ローカルメモリ16に対する
潜在的なアクセスを示す、連続してより高度になる復号
化表示を提供する前記3つの警告信号をモニタすること
によって実現される。これらの信号は、前記プロセッサ
40からのローカルメモリアクセス要求による限定に応
じて、リフレッシサイクルを一時機能停止したり中断し
たりするために、前記ローカルメモリ制御回路60によ
って使用される。この3段階の警告処理により、前記プ
ロセッサ40によるローカルメモリに対するアクセスの
前に、ローカルメモリリフレッシュを中断したり、また
は、完了するための十分な時間が保証され、これによ
り、前記プロセッサ40から前記リフレッシュ動作を完
全に隠蔽することができる。
【0078】前記プロトコル変換回路50に関して上述
したように、前記プロセッサ40が前記プロトコル変換
回路50に対してあるコマンドを送っている旨示す前記
第1の警告信号(VALID OUT)は、前記プロセッサ40か
ら直接に前記ローカルメモリ制御回路60に送られる。
こうして、前記ローカルメモリ16に対するアクセスに
ついて、最先ではあるが、ローカルメモリ要求が実際に
与えられたという確実性が最も小さい予告がなされる。
すなわち、前記VALID OUT信号は、そのうちの1つのみ
がローカルメモリ16に対するメモリサイクルである、
多数の動作を示す。故に、前記第1の警告信号(VALID O
UT)を入力した時、前記ローカルメモリ制御回路60
は、単に、前記第2の警告信号が入力したか否かの判定
を行うのに十分な時間にわたり、ローカルメモリリフレ
ツシュを遅延させる。
【0079】図示例において、前記プロセッサ40から
の第1の警告信号(VALID OUT)の入力は、前記メモリ制
御論理がそのサイクルでリフレッシュを行った場合にの
み、ローカルメモリリフレツシュを1クロックサイクル
遅延させる。1クロックサイクルは、前記プセッサ信号
を処理するプロトコル変換回路50が、前記ローカルメ
モリに対する要求を処理している旨示す第2の警告信号
(LM WARNING)を発するのに十分な時間である。リフレ
ッシュが開始される前に前記第2の警告信号がローカル
メモリ制御回路60に入力された場合、メモリリフレッ
シュは、無限に、つまり、前記LM WARNING信号がオフさ
れるまで遅延される。最後に、前記第3の警告信号(LM
OP)は、前記ローカルメモリに対するアクセスが前記
プロセッサ40によって要求された旨、および、数サイ
クル後に前記制御回路60がローカルメモリアクセス要
求(LM START)を入力する旨示すものである。前記第3
の警告信号(LM OP)の入力は、思惑的なメモリリフレ
ッシュサイクルをキャンセルし、前記プロセッサからの
アクセス要求を実行するよう前記メモリを準備させる。
【0080】従って、プロセッサ命令に関する異なる復
号レベルに対応する前記3つのレベルの警告信号を使用
することによって、本発明では、前記プロセッサによる
ローカルメモリアクセスの前に、ローカルメモリリフレ
ッシュが完了するか、または、このようなアクセスを可
能にするために中断されるようになっている。このよう
にして、前記ローカルメモリリフレッシュは前記プロセ
ッサから完全に隠蔽され、このフォールトトレラント型
コンピュータシステムの多重CPUの間における同期目
的を達成する際、前記ローカルメモリリフレッシュは無
視されることができる。前記リフレッシュ制御の隠蔽を
確実にするために各種信号が使用される方法は、図1
2、図13および図14にそれぞれ示された3つの例を
考察することによって、より明確に理解されると思う。
【0081】図12において、前記プロセッサ40から
のローカルメモリアクセスを示す警告信号に基づいて、
中断なく行われるローカルメモリリフレッシュが示され
ている。このため、図12から理解されるように、前記
3つの警告信号の各々は、リフレッシュ処理の間中、ロ
ーレベルである。(なお、場合によっては、耐ノイズ性
を高めるため、反転された信号が使用されるのが好まし
い)。リフレッシュを開始するために、前記リフレッシ
ュタイマ71からのリフレッシュ要求信号は、リフレッ
シュされる前記DRAMの設計上の要件に従うリフレッ
シュの必要を示す、ハイレベルになっている。ローカル
メモリ警告信号が検出されていないので、このリフレッ
シュ要求信号は、思惑的なリフレッシュを知らせるCAS
ENABLE信号をオンする。半クロックサイクル後、ローカ
ルメモリ制御回路60によって、CAS信号が前記DRA
Mに出力される。RAS信号の前に前記DRAMに与えら
れるCAS信号は、前記DRAMに対して、リフレッシュ
が要求されている旨知らせるので、前記DRAMは、前
記RAS信号が該DRAMに与えられた時に、リフレシュ
を開始する。CAS信号から半クロックサイクル後、前記
ローカルメモリ制御回路60には警告信号が入力されな
いので、RAS ENABLE信号がハイレベルになり、次の半ク
ロックサイクル後、RAS信号自体がハイレベルになる。
【0082】さらに図12に示すように、ハイレベルに
なったRAS ENABLE信号はCAS ENABLE信号をローレベルに
し、こうして、CAS信号がローレベルになる。RAS信号お
よびRAS ENABLE信号がハイレベルのままCAS信号がロー
レベルになると、前記DRAMは、その内部的なメモリ
リフレッシュを開始する。このリフレッシュは、特定の
DRAM設計に応じて要求されるサイクル数だけRAS信
号が継続した時に、完了される。図12から分るよう
に、前記リフレッシュは、前記ローカルメモリに対する
前記プロセッサによるアクセスを示す警告信号からの干
渉無しに行われ、また、前記ローカルプロセッサ40か
ら完全に隠蔽される。
【0083】図13には、前記リフレッシュを1クロッ
クサイクル遅延する第1の警告信号が与えられた場合に
おける、前記ローカルメモリ制御回路60に与えられた
信号、および、該制御回路60から出力されるメモリ制
御信号のタイミングが示されている。しかし、第2およ
び第3の警告信号は与えられておらず、リフレッシュは
完了まで続行することができる。より詳しくは、図13
において、図12のリフレッシュと同様に、先ずCAS EN
ABLE信号がハイレベルになり、次にCAS信号がハイレベ
ルになることによって、リフレッシュ要求信号が思惑的
なリフレッシュを開始する。しかし、この時点におい
て、前記第1の警告信号(VALID OUT)が前記プロセッサ
40から入力される。
【0084】図13において破線で示すように、CAS信
号が入力された後、通常、1クロック内にRAS ENABLE信
号が入力され、その後、次の1クロック内にRAS信号が
入力されることになる。しかし、ローカルメモリ制御回
路60はCAS信号を出力した後に前記第1の警告信号(VA
LID OUT)を入力するので、図13の破線と実線との差
によって示すように、前記RAS ENABLE信号が1クロック
サイクル遅延される。同様に、図13の破線と実線との
差によって示すように、前記RAS信号が1クロックサイ
クル遅延される。このようにしてリフレッシュは1クロ
ックサイクル遅延されるが、第2の警告信号(LM WARNI
NG)は、前記第1の警告信号から所定の時間内、すなわ
ち、1クロックサイクル内には発生されない。このよう
に、図13の実線で示すように、前記RAS ENABLE線は1
サイクル後にハイレベルになる。このため、前記プロセ
ッサによる要求の以後の復号はリフレッシュを停止する
時間に間に合うよう第2の警告をオンしないので、前記
ローカルメモリリフレッシュ制御は最初の警告に関わら
ず進行する。
【0085】さらに図13において、前記第2の警告信
号(LM WARNING)および第3の警告信号(LM OP)に関
する破線部分から分るように、これらの信号が図示のよ
うに発生しても、ローカルメモリリフレッシュは実行さ
れ進行する。しかし、前記プロセッサによるローカルメ
モリアクセスの開始を示すLM START信号によって示され
る(破線のタイミング信号として示される)ように、こ
のアクセスは、ローカルメモリのリフレッシュ完了前に
は要求されない。故に、リフレッシュ実行時点は、リフ
レッシュが実行されると、前記メモリに対するアクセス
が前記プロセッサによって要求される前に完了するよ
う、設定される。
【0086】図14には、前記第1、第2および第3の
警告信号の適当なシーケンスによって通知されるローカ
ルメモリアクセスによってメモリリフレッシュがキャン
セルされる場合における、前記ローカルメモリリフレッ
シュ制御のタイミングシーケンスが示されている。より
詳しくは、図14に示すように、リフレッシュ要求信号
が思惑的なリフレッシュサイクルを開始するCAS ENABLE
信号を開始した後、第1の警告信号(VALIDOUT)がロー
カルメモリ制御回路60に与えられる。破線で示すよう
に、RAS ENABLE信号が第1の状態から第2の状態に変化
することによって、これは前記RASENABLE信号を1クロ
ックサイクル遅延させる。RAS信号も遅延される。次
に、前記RAS ENABLE信号がローレベルからハイレベルに
変化する前に、第2の警告信号(LM WARNING)が入力さ
れる。図14の第2および第3の破線組によって示すよ
うに、これは、前記RAS ENABLE信号がおよびRAS信号を
さらに2クロックサイクル遅延させる。さらに、図14
に示すように、最後に、前記第3の警告信号(LMOP)は
CAS ENABLE信号をオフし、これにより、ローカルメモリ
リフレッシュ動作が、ローカルメモリ制御回路60によ
ってキャンセルされる。
【0087】例えば、図14に示すように、前記第3の
警告信号(LM OP)は、RAS信号がハイレベルになる前に
CAS ENABLE信号およびCAS信号をハイレベルからローレ
ベルに変化させ、通常のDRAMのためにリフレッシュ
動作を示す必要をなくすために使用可能である。LM STA
RT線およびメモリアクセス表示によって示されるよう
に、前記メモリアクセスは、リフレッシュ動作がキャン
セルされた後に開始される。こうして、前記プロセッサ
によるローカルメモリに対するアクセスは、中断された
リフレッシュ動作が前記プロセッサ4に与えられている
旨の表示無しに、進行する。前記第1および第2の警告
信号(VALID OUTおよびLM WARNING)は、リフレッシュサ
イクルの実行のみを遅延させる。前記リフレッシュ要求
信号および第3の警告信号は、思惑的なリフレッシュサ
イクルの開始またはキャンセルを制御する。
【0088】図12、図13および図14に示し上述し
た成功したリフレッシュ動作および中断されたリフレッ
シュ動作の例から理解されるように、この発明は、前記
プロセッサによるアクセス動作に大きな影響を与えるこ
となく、前記プロセッサによるメモリアクセスが可能に
なる前にリフレッシュが適切に完了するか、または、こ
のようなメモリアクセスを可能にするためにメモリリフ
レッシュを中断することを可能にする。故に、リフレッ
シュを可能にし、または、該リフレッシュに対して特定
のタイミングシーケンスで中断することを可能にするた
めに、前記ローカルメモリ制御回路60によって使用さ
れる警告信号のシーケンスは、前記プロセッサからリフ
レッシュ動作を隠蔽することができる。
【0089】このリフレッシュ動作の隠蔽は、フォール
トトレラント型コンピュータシステムの多重のCPU間
における付加的な複雑化を回避する。これにより、後で
説明する外部割り込みボーティングと同様にリフレッシ
ュ要求をボートしなければならない、潜在的に複雑なボ
ーティング用ハードウエアを不要にする。さらに、リフ
レッシュが隠蔽されるので、前記プロセッサは、決し
て、リフレッシュのために遅延されず、前記ローカルメ
モリに対するアクセスを待つことを強要されない。
【0090】割り込み同期:図1のシステムの前記3つ
のCPUは、単一の論理的プロセッサとして機能するこ
とが要求されているので、該3つのCPUのプログラミ
ングモデルが単一の論理的プロセッサのモデルであるこ
とを保証するために、これらのCPUはその内部状態に
関してある制限に従う必要がある。故障モードおよび診
断モードの場合を除き、前記3つのCPUによって実行
される命令ストリームは同一でなければならない。同一
でない場合、グローバルメモリに対するアクセスをボー
トするのが難しくなる。つまり、この場合、ボーティン
グ回路は、1つのCPUが故障しているか否か、つま
り、該CPUが他とは異なる命令シーケンスを実行して
いるか否かを知ることができない。上述した同期は、故
障が発生していない限り、CPUのI/O要求により、
いずれかのCPUのコードストリームが他のCPUのコ
ードストリームから逸脱しない、ことを保証する。しか
し、外部割り込み同期も必要である。
【0091】前記3つのCPU−A、CPU−Bおよび
CPU−Cが割り込みの結果相互に逸脱しないことを保
証するために、すべての割り込みは、特定のクロックカ
ウントに同期して発生する必要がある。しかし、異なる
クロックカウント値で発生する割り込み前記CPUのコ
ードストリームを相互に逸脱させるシナリオはいくつか
存在する。例えば、処理Aが完了する前に1つのCPU
における文脈を変化させるが、他のCPUでは処理Aが
完了した後に前記文脈を変化させる割り込みは、ある時
間後に、一方のCPUは処理Aを実行しつづけている
が、他方のCPUは処理Aがすでに完了しているので該
処理Aを実行できない、という状況を発生する。このよ
うな場合、異なる命令について割り込みが発生すると、
異常プログラムカウンタが異なる、という事実によって
問題が発生する。前記異常プログラムカウンタの値をグ
ローバルメモリに書き込む動作により、前記ボーティン
グ回路は前記3つのCPUと異なるデータを検出し、ボ
ートエラーが発生する。
【0092】前記CPUにおける一定種類の異常は、本
来的に、クロックカウントに同期するものである。1つ
の例は、区切り点命令の実行によって発生する区切り点
異常である。前記CPUの命令ストリームは同一である
ので、前記区切り点異常は、前記3つのCPUのすべて
において同じ命令で発生する。同様に、このような内部
異常のすべては、本来的に、命令ストリームに同期して
発生する。外部異常は、本来的に、各CPUのクロック
カウントに同期しない。I/O装置26,27または3
0は、前記3つのCPU11,12,13の仮想時間に
ついての情報を有さない。故に、後で説明するように、
これらのI/O装置によって発生されるすべての割り込
みは、前記CPUに与えられる前に、クロックカウント
に同期されなければならない。
【0093】外部装置は、これらのCPUを1つの論理
的プロセッサとみなし、前記CPU間の同期または同期
不足についての情報を有さないので、各前記CPUの個
々の命令ストリームと同期した割り込み信号を発生でき
ない。いずれの種類の同期も存在しない場合、ある外部
装置がある実時間において割り込み信号を発生し、該割
り込み信号がこの時点で前記CPUに対して直接的に与
えられると、前記3つのCPUは異なる命令において割
り込み信号を受けることになり、前記3つのCPUは許
容不能な状態に置かれることになる。これは、実時間に
は同期しているが、各CPUのクロックカウントには同
期していないイベント(割り込み表明)の一例である。
【0094】割り込み信号について分散したボートを行
い、所定のサイクルカウント値で割り込み信号を前記プ
ロセッサに与えることによって、割り込み信号は、図1
および図2のシステムの各CPUのクロックカウントに
同期される。図15は、図2の割り込み同期論理回路6
5のより詳細なブロック図を示す。各CPUは、前記メ
モリモジュール14または15から延びる線69または
70によって送られる外部割り込み信号を入力するディ
ストリビュータ135を備えている。この外部割り込み
信号の入力は、クロックサイクルカウンタ51(図2)
から延びる入力線CC−4を介して通知される、例えば
カウント値4のような所定のサイクルカウント値で行わ
れる。入力された前記割り込み信号は、前記CPU間バ
ス18を介して、他の2つのCPUに分配される。これ
らの分配される割り込み信号を、ペンディング割り込み
信号と言う。該ペンディング割り込み信号には3グルー
プあり、1つの前記グループは1つのCPU11,12
または13に対応するものである。ボータ回路136
は、前記ペンディング割り込み信号を入力し、前記CP
Uのすべてが前記外部割り込み要求を受け取ったことを
確かめるためのボートを行う。
【0095】次に、この例では入力線CC−8を介して
入力するサイクル8である、所定のサイクルカウント
(クロックサイクルカウンタ51で検出したもの)で、
前記ボータ回路136は、線137を介して、前記プロ
トコル変換回路およびさらに各々のマイクロプロセッサ
40に対して前記割り込み信号を出力する。前記割り込
み信号を出力するサイクルカウントは予め決められてい
るので、すべての前記マイクロプロセッサ40は、同じ
クロックカウント値で前記割り込み信号を入力し、こう
して、前記割り込み信号が同期されたことになる。
【0096】図16は、前記割り込みをクロックカウン
トに同期させるためのイベントシーケンスを示すもので
ある。CPU−A、CPU−BおよびCPU−Cと表示
された列は、各CPUのカウンタの実時間時点における
サイクルカウントを示す。IRQ_A_PEND、IR
Q_B_PENDおよびIRQ_C_PENDと表示さ
れた列は、前記CPU間バス18を介して前記ボータ回
路136の入力端子に接続された割り込みペンディング
ビットの状態を示す(“1”は、前記ペンディングビッ
トがセットされていることを示す)。また、IRQ_
A、IRQ_BおよびIRQ_Cと表示された列は、前
記マイクロプロセッサ40の割り込み入力ピンの状態
(線137上の信号)を示し、ここで、“1”は、前記
入力ピンに割り込みが存在していることを示す。図16
において、外部割り込み信号(EX_IRQ)は、時点
t0で、線69に表明つまり出力される。前記ディスト
リビュータ135が、サイクルカウント4で、前記割り
込み信号を入力し前記CPU間バス18に分配すると、
IRQ_C_PENDは時点t1で能動状態になり、I
RQ_B_PENDは時点t2で能動状態になり、IR
Q_A_PENDは時点t4で能動状態になる。また、
前記割り込みボータ回路136が、サイクルカウント8
で、前記割り込みペンディングビットを入力してボート
すると、IRQ_Cは時点t5で能動状態になり、IR
Q_Bは時点t6で能動状態になり、IRQ_Aは時点
t8で能動状態になる。その結果、実時間では異なる時
点であるが同じクロックカウント(すなわち、カウント
8)で、前記割り込み信号が各前記CPUに与えられ
る。
【0097】図17は、図16に示されたアルゴリズム
の変更を要するシナリオを例示するものである。なお、
ここでは、前記クロックサイクルカウンタ51は、モジ
ュロ8のカウンタである。外部割り込み信号(EX_I
RQ)は時点t3に出力され、前記ディストリビュータ
135は、サイクルカウント4で、前記外部割り込み信
号を入力し、前記CPU間バス18に分配する。CPU
−BおよびCPU−Cは時点t3の前にサイクルカウン
ト4を実行しており、CPU−Aは、時点t4で、前記
外部割り込み信号を入力して分配する。
【0098】しかし、前記割り込みボータ回路136
が、カウントサイクル7で、割り込みペンディングビッ
トを入力してボートする場合、CPU−Aの割り込みボ
ータ回路は、時点t7で、IRQ_A_PEND信号を
入力する。この時、2つの他の割り込みペンディングビ
ットはセットされない。前記CPU−Aの割り込みボー
タ回路136は、すべてのCPUが前記外部割り込み信
号を分配したのではないことを認識し、故に、入力した
割り込みペンディングビットを保持レジスタ138に格
納する。また、前記CPU−BおよびCPU−Cの割り
込みボータ回路136は、それぞれ時点t5およびt4
で、単一の前記割り込みペンディングビットを入力す
る。前記CPU−Aの割り込みボータ回路136と同様
に、前記CPU−BおよびCPU−Cの割り込みボータ
回路136は、すべての割り込みペンディングビットが
セットされたのではないことを認識し、故に、セットさ
れた割り込みペンディングビットを保持レジスタ138
に格納する。
【0099】各CPUのサイクルカウンタ51は、サイ
クルカウント7に到達すると、サイクルカウント0から
のカウントを再び開始する。前記外部割り込み信号は依
然として発生されているので、前記CPU−BおよびC
PU−Cの割り込みディストリビュータ135は、それ
ぞれ時点t10およびt9で、前記外部割り込み信号を入
力する。これらの時間は、サイクルカウントが4になる
時に対応する。時点t12では、前記CPU−Cの割り込
みボータ回路136は、前記CPU間バス18上の割り
込みペンディングビットを入力する。該ボータ回路13
6は、すべての前記CPUが前記外部割り込み信号を入
力して分配したと判定し、前記割り込み信号を前記プロ
セッサ40に与える。次に、時点t13およびt15におい
て、前記CPU−BおよびCPU−Cの割り込みボータ
回路136は、前記割り込みペンディングビットを入力
し、前記割り込み信号を前記プロセッサ40に与える。
その結果、すべての前記プロセッサ40は、同一の命令
で外部割り込み要求を入力し、前記保持レジスタにセー
ブした情報は必要でなくなる。
【0100】保持レジスタ:図17に関して上述した割
り込みシナリオにおいて、前記ボータ回路136は、あ
る状態情報をセーブするめたに保持レジスタ138を使
用している。とくに、セーブされた状態情報は、前記C
PUのうちの、すべてではなくいくつかが外部割り込み
信号を入力して分配したという状態を示すものであっ
た。(図17のシナリオと同様に)該システムが故障を
有さない場合、前述の例に示したように、外部割り込み
信号は保持レジスタ138を使用することなく前記クロ
ックカウントに同期可能であるので、この状態情報は必
要ではない。このアルゴリズムでは、前記ボータ回路1
36が、所定のクロックカウントで、割り込みペンディ
ングビットを入力してボートする。すべての前記割り込
みペンディングビットが入力されると、該割り込み信号
は、所定のクロックカウントで、前記プロセッサ40に
与えられる。図17の例において、前記割り込み信号は
サイクルカウント7でボートされる。
【0101】さらに、図17において、CPU−Cが故
障し、前記割り込みディストリビュータ135が正しく
機能しない故障モードであり、このため、割り込み信号
が前記プロセッサ40に送られる前にすべての割り込み
ペンディングビットがセットされるまで、前記ボータ回
路136が待った場合、割り込み信号が与えられないと
いう結果になる。このように、単一のCPUにおける単
一の故障によって、すべてのCPUの全体的な割り込み
連鎖が働かなくなる。前記保持レジスタ138は、最後
の割り込みボートサイクルで、前記割り込みペンディン
グビットのすべてではないが、少なくとも1つが入力さ
れた、ということを前記ボータ回路136が知るための
機構を提供する。前記最後の割り込みボートサイクル
は、前記ボータ回路136が割り込みペンディングビッ
トを入力してボートするサイクルカウントに発生するも
のである。前記割り込みペンディングビットのいくつか
がセットされることになるシナリオは、2つしかない。
そのうちの1番目は、図17に関して説明したシナリオ
であり、あるCPUにおける割り込み信号分配サイクル
の前ではあるが、他のCPUにおける割り込み信号分配
サイクルの後に、外部割り込み信号が発生する場合であ
る。また、2番目のシナリオは、割り込み信号分配が不
能になる程に、少なくとも1つのCPUが故障する場合
である。
【0102】前記割り込みペンディングビットのいくつ
かのみが前記割り込みボートサイクルでセットされる理
由が前記1番目のシナリオである場合、すべての割り込
みペンディングビットが次の割り込みボートサイクルで
セットされる、ということが前記ボータ回路136に保
証される。故に、前記保持レジスタがセットされ、すべ
ての割り込みペンディングビットはセットされていな
い、ということを前記ボータ回路136が発見した場
合、前記CPUのうちの1または2つ以上にエラーが存
在するにちがいないということになる。これは、割り込
みが与えられた時に、各CPUの保持レジスタ138が
クリアされ、その結果、前記保持レジスタ138の状態
が前記割り込みペンディングビットに関する旧くて無効
な状態を示さない、ということを仮定している。エラー
が発生した場合、前記ボータ回路136は、前記プロセ
ッサ40に割り込み信号を与え、同時に、前記割り込み
同期論理回路においてエラーが発生した旨示すことがで
きる。
【0103】前記ボータ回路136は、前記割り込みペ
ンディングビットおよび保持レジスタ138の状態をチ
ェックすることによって、前記プロセッサ40に割り込
み信号を与えるべきか否か、および、前記割り込み同期
論理回路におけるエラーを表示すべきか否かを決定す
る。 モジュロサイクルカウンタ:図17に示した割り込み同
期の例は、割り込みサイクルカウンタ51をモジュロN
(例えば8)のカウンタとして示している。このモジュ
ロNのカウンタは、割り込みボートサイクルの概念を考
慮することによって、前記割り込みボート要のアルゴリ
ズムの説明が簡略化される。このモジュロNのカウンタ
によって、前記割り込みボートサイクルは、0からN−
1の範囲内の1つのサイクルカウントとして説明可能で
ある(Nは前記サイクルカウンタのモジュロ)。前記割
り込みボートサイクルのためにサイクルカウンタのいず
れの値が選択されようと、そのサイクルカウントは、N
個のサイクルカウントごとに発生するよう保証される。
つまり、図17の例のようにモジュロ8のカウンタの場
合では、8カウントごとに割り込みボートサイクルが発
生する。ここでは、該割り込みボートサイクルは、単
に、モジュロNのカウンタの定期性を説明するために使
用されている。モジュロNのカウンタの特定のサイクル
カウントに基づくイベントは、N個のサイクルカウント
ごとに発生するよう保証される。
【0104】Nの値は、該システムにプラスの影響を与
えるシステムパラメータを最大にし、且つ、該システム
にマイナスの影響を与えるシステムパラメータを最小に
する、よう設定される。先ずパラメータのいくつかを説
明すると、次のようである。CvおよびCdは、それぞ
れ、割り込みボートサイクルおよび割り込み分配サイク
ルである(図15の回路では、これらは、それぞれ、入
力CC−8およびCC4である)。CvおよびCdの値
は、0からN−1の範囲内でなければならない(Nは前
記サイクルカウンタのモジュロである)。Dmaxは、前
記同期論理回路によって許容可能な前記3つのCPU間
におけるクロックカウントドリフト最大量である。該ド
リフトは、ある実時間時点において各CPUからクロッ
クカウントのスナップショットを取り出すことによって
検出される。該ドリフトは、モジュロNの減算として、
最も速いCPUのサイクルカウント値から最も遅いCP
Uのサイクルカウント値を減算することによって算出さ
れる。このDmaxの値は、NならびにCvおよびCdの関
数として与えられる。
【0105】先ず、DmaxはCv−Cdの差分の関数と
して与えられ、この減算はモジュロNの減算として行わ
れる。これは、Dmaxを最大化するCvおよびCdの値を
選択することを可能にする。ここで、図18のシナリオ
を考察する。ここで、Cd=8およびCv=9とする。図
18から、前記CPU間のドリフトは、Dmax=4であ
ると算出可能である。線69上の外部割り込み信号は、
時点t4に入力される。この場合、CPU−Bは、時点
t5で、前記割り込み信号を入力して分配する。その
後、CPU−Bは、時点t6で、割り込みペンディング
ビットを入力してボートする。CPU−Bは、CPU−
Aが前記割り込み分配サイクルを実行する前に、その割
り込みボートサイクルを実行するので、このシナリオは
上述した割り込み同期アルゴリズムと一致していない。
このシナリオに関する欠点は、前記CPUがCvとCdと
の差分以上にドリフトすることである。
【0106】その関係を式にすると Cv−Cd < Dmax−e 式(1) であり、ここで、eは、前記割り込みペンディングビッ
トが前記CPU間バス18によって伝播するのに要する
時間である。前の例においては、eはゼロであると仮定
されていた。掛時計時間はクロックサイクル(ランサイ
クル)インクリメント時に量子化されているので、eも
量子化可能である。このようにして、前記式は Cv−Cd < Dmax−1 式(2) となり、ここで、Dmaxは整数のクロックカウント値と
して表されている。次に、前記最大ドリフトはNの関数
として示すことができる。図19は、N=4で、CPU
間ドリフトがD=3であるシナリオを例示している。こ
こで、Cd=0とする。各前記CPUのサイクルカウン
ト0に付記した下付文字は、命令サイクルカウントの商
部分(Q)を示すものである。前記サイクルカウントは
モジュロNで示されているので、前記サイクルカウンタ
の値はI/Nの余りである(ここで、Iは時点t0以後
実行された命令の数である)。前記命令サイクルカウン
トの商部分(Q)は、I/Nの整数部分である。前記外
部割り込み信号が時点t3で発生された場合、CPU−
Aは、時点t4で、この割り込み信号を入力して分配
し、CPU−Bは、時点t5で、その割り込み信号分配
サイクルを実行する。前記CPU−Aに関する割り込み
信号分配サイクルはQ=1を有し、前記CPU−Bに関
する割り込み信号分配サイクルはQ=2を有するので、
これは問題を生じる。
【0107】しかし、前記同期論理回路は、あたかも問
題が全く無いかのように動作し続け、同等のサイクルカ
ウント値において、前記割り込み信号を前記CPUに与
える。しかし、各前記CPUのQが異なるので、前記割
り込み信号は異なる命令において各々CPUに与えられ
る。故に、Nの関数としてのDmaxの関係式は N/2 > Dmax 式(3) となり、ここで、Nは偶数であり、Dmaxは整数のサイ
クルカウントとして表される。(これらの不等式(2)
および(3)は、サンプリング定理におけるナイキスト
理論と同等のものとして示すことができる。)これら式
(2)および(3)を組合わせると、 Cv−Cd < (N/2)−1 式(4) となり、これにより、特定のNの値に関して、最適なC
vおよびCdの値を選択可能になる。
【0108】すべての上記式は、Nをできる限り大きな
値にすべきことを示唆している。Nを小さな値にしよう
とする唯一の要素は、割り込み待ち時間である。該割り
込み待ち時間は、線69による外部割り込み信号の出力
と、線137による前記マイクロプロセッサに対する前
記外部割り込み信号の入力との間の時間間隔である。前
記割り込み待ち時間を決定するためにどのプロセッサを
使用すべきかは、明確に選択できない。前記3つのプロ
セッサは、クロック17の水晶発振器のわずかな差によ
り異なる速度で動作するものである。すなわち、最も速
いプロセッサ、最も遅いプロセッサ、および、その他の
プロセッサが存在することになる。該システムの性能
は、最終的に、最も遅いプロセッサの性能によって決ま
るので、前記最も遅いプロセッサを基準として前記割り
込み待ち時間を規定するのが適当である。最長の割り込
み待ち時間は、 Lmax = 2N―1 式(5) ここで、Lmaxはサイクルカウント値で表した最長割り
込み待ち時間である。この最長割り込み待ち時間は、最
も速いプロセッサの割り込み信号分配サイクルCdの後
であるが、最も遅いプロセッサの割り込み信号分配サイ
クルCdの前において、前記外部割り込み信号が出力さ
れたときに、発生する。
【0109】平均的な割り込み待ち時間Laveの算出
は、より複雑である。というのは、この算出は、前記外
部割り込み信号が最も速いプロセッサの割り込み信号分
配サイクルCの後であって、最も遅いプロセッサの割り
込み信号分配サイクルCの前に発生する、という見込に
依存するからである。この見込は前記プロセッサ間のド
リフトによって左右され、該ドリフトは多数の外部要因
によって決まる。これらの見込がゼロであると仮定した
場合、平均的な割り込み待ち時間は、 Lave =(N/2)+(Cv―Cd) 式(6) である。
【0110】これらの関係を使用し、Dmaxおよび割り
込み待ち時間に関するシステム要件を使用して、N、C
vおよびCdの値が選択される。例えば、C=128、
(Cv―Cd)=10、Lave=74または約4.4マイ
クロ秒を選択する。4ビット(4つの 2進段階)カウ
ンタ51が割り込み同期カウンタとして使用され、分配
およびボート出力が上述のようにCC―4およびCC―
8による好ましい実施例を使用することによって、N=
16、Cv=8およびCd=4であり、従って、Lave=
16/2+(8―4)=12サイクルまたは0.7マイ
クロ秒である。
【0111】
【発明の効果】以上のように、この発明は、同期タイプ
の高信頼性の構成において、高速プロセッサの高速処理
能力を十分活用できる、という優れた効果を奏する。
【図面の簡単な説明】
【図1】この発明の一実施例に係るコンピュータシステ
ムを示すブロック図。
【図2】図1に示したシステムの複数のCPUのうちの
1つを示すブロック図。
【図3】図2に示したCPUに使用されるプロトコル変
換回路を示すブロック図。
【図4】図1および図2に示したシステムに使用される
CPU同期論理回路の一部分を示すブロック図。
【図5】同CPU同期論理回路の他の部分を示すブロッ
ク図。
【図6】同CPU同期論理回路の他の部分を示すブロッ
ク図。
【図7】図4、図5および図6に示した同期回路に使用
されるクロックサイクルカウンタを示す図。
【図8】この発明によって実行されるCPUクロックド
リフト除去ルーチンを示すフローチャート。
【図9】図4、図5および図6に示したドリフト除去回
路のブロック図。
【図10】図9に示した同期回路のタイミングチャー
ト。
【図11】図2のCPUに使用されるローカルメモリリ
フレッシュタイマのブロック図。
【図12】図2のローカルメモリ制御回路によって行わ
れる隠れローカルメモリリフレッシュ制御を説明するタ
イミングチャート。
【図13】図2のローカルメモリ制御回路によって行わ
れる隠れローカルメモリリフレッシュ制御を説明するタ
イミングチャート。
【図14】図2のローカルメモリ制御回路によって行わ
れる隠れローカルメモリリフレッシュ制御を説明するタ
イミングチャート。
【図15】図2のCPUに使用される割り込み同期回路
のブロック図。
【図16】割り込み発生時における、図1および図2の
CPU内での命令実行に関するイベント対時間の関係を
示すタイミングチャート。
【図17】割り込み発生時における、図1および図2の
CPU内での命令実行に関するイベント対時間の関係を
示すタイミングチャート。
【図18】割り込み発生時における、図1および図2の
CPU内での命令実行に関するイベント対時間の関係を
示すタイミングチャート。
【図19】割り込み発生時における、図1および図2の
CPU内での命令実行に関するイベント対時間の関係を
示すタイミングチャート。
【符号の説明】
11,12,13 CPU 14,15 メモリモジュール 16 ローカルメモリ 26,27 I/Oプロセッサ 40 プロセッサ 50 プロトコル変換回路 51 クロックサイクルカウンタ 56 バスインターフェース回路 60 ローカルメモリ制御回路 65 割り込み同期論理回路 71 リフレッシュタイマ 73 同期論理回路 124 ドリフト除去同期
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジェイムズ・エス・クレッカ アメリカ合衆国 78717 テキサス,オー スチン,エフレイム・ロード 8651 (72)発明者 カイラン・タブリュ・フェイ・ジュニア アメリカ合衆国 78660 テキサス,フリ ューゲルビル,ヒッコリー・リッジ 507 (72)発明者 ラリー・エル・ラマノ アメリカ合衆国 78759 テキサス,オー スチン,アローポイント・コウブ 6805 (72)発明者 ニキール・エイ・メータ アメリカ合衆国 78758 テキサス,オー スチン,プライリエ・ヘン・コウブ 1715

Claims (30)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサモジュールであって、
    各前記プロセッサモジュールが、命令ストリームを実行
    するものであり、前記命令の実行タイミングを制御する
    クロック信号を発生する独立したクロックを有し、各前
    記プロセッサモジュールが入出力(以下I/Oという)
    動作要求を定期的に発生し、該I/O動作要求が前記プ
    ロセッサモジュール間において非同期的に発生されるよ
    うになった前記複数のプロセッサモジュールと、 前記プロセッサモジュールとは別個にクロックされる1
    つまたは2つ以上の外部装置と、 I/O動作中、前記プロセッサモジュールを前記1つま
    たは2つ以上の外部装置に接続する手段と、 各前記プロセッサモジュールごとの前記I/O動作の長
    さを、各前記プロセッサモジュールごとに同じクロック
    サイクル数となるよう制御する同期手段とを具備した、
    命令ストリームを処理するためのフォールトトレラント
    型コンピュータシステム。
  2. 【請求項2】 前記同期手段が、各前記プロセッサモジ
    ュールに複数設けられたクロックサイクルカウンタから
    なり、各前記プロセッサモジュールにおける前記カウン
    タの数が、前記プロセッサモジュールの数と同数である
    請求項1に記載のフォールトトレラント型コンピュータ
    システム。 【請求項2】 前記同期手段が、各前記プロセッサモジ
    ュールに複数設けられたクロックサイクルカウンタから
    なり、各前記プロセッサモジュールにおける前記カウン
    タの数が、前記プロセッサモジュールの数と同数である
    請求項1に記載のフォールトトレラント型コンピュータ
    システム。
  3. 【請求項3】 各前記プロセッサモジュールが、 所定の間隔で割り込み信号を発生する手段と、 前記割り込み信号に応答して、実時間に関して、前記プ
    ロセッサモジュールの動作を他の前記プロセッサモジュ
    ールに略整列させるクロックドリフト除去手段とをさら
    に備えた請求項1に記載のフォールトトレラント型コン
    ピュータシステム。
  4. 【請求項4】 前記割り込み信号を発生する手段が前記
    クロック信号を入力するタイマからなり、該タイマが、
    所定数の前記クロック信号ごとに前記割り込み信号を発
    生する請求項3に記載のフォールトトレラント型コンピ
    ュータシステム。
  5. 【請求項5】 前記クロックドリフト除去手段が、 前記プロセッサモジュールに対して、現在実行中のすべ
    ての動作を完了するよう指示する手段と、 前記プロセッサモジュールに対する割り込みを不能化す
    る手段と、 前記プロセッサモジュールと前記他のプロセッサモジュ
    ールとの間における累積したクロック信号のドリフトを
    除去するために、前記他のプロセッサモジュールとは異
    なる時間の間、前記プロセッサモジュールが前記命令ス
    トリームを実行するのを一時機能停止させる手段とを備
    えた請求項3に記載のフォールトトレラント型コンピュ
    ータシステム。
  6. 【請求項6】 前記クロックドリフト除去手段が、 同期命令を発する手段と、 前記同期命令に応答して、同期信号を発生し、且つ、前
    記他のプロセッサモジュールに前記同期信号を与える手
    段とを備えた請求項5に記載のフォールトトレラント型
    コンピュータシステム。
  7. 【請求項7】 前記クロックドリフト除去手段が、前記
    プロセッサモジュールの間における累積したクロック信
    号ドリフトに対応するそれぞれのタイミングで、各前記
    プロセッサモジュールから前記同期信号を入力し、且
    つ、前記累積したクロック信号ドリフトが所定の許容可
    能な範囲内にあるか否かを判定する同期ボート手段をさ
    らに備えた請求項6に記載のフォールトトレラント型コ
    ンピュータシステム。
  8. 【請求項8】 前記同期ボート手段が、前記同期信号が
    前記所定の範囲内にあると判定したときに前記異なる長
    さの一時機能停止状態を解放するための信号を発生する
    請求項7に記載のフォールトトレラント型コンピュータ
    システム。
  9. 【請求項9】 前記接続する手段が、前記プロセッサモ
    ジュールのI/O動作要求をボートし、および、ボート
    された前記I/O動作が完了した時に確認信号を出力
    し、前記同期手段が、前記確認信号を入力し、該確認信
    号に応答して、前記プロセッサモジュールが前記I/O
    動作要求を出力する前記異なる時間に対応する各前記プ
    ロセッサモジュールごとに異なる時間に、前記プロセッ
    サモジュールに対して解放信号を出力する請求項1に記
    載のフォールトトレラント型コンピュータシステム。
  10. 【請求項10】 前記接続する手段が、フォールトトレ
    ラントメモリモジュールと、該メモリを前記プロセッサ
    モジュールに接続するバス手段とを備えた請求項9に記
    載のフォールトトレラント型コンピュータシステム。
  11. 【請求項11】 複数の中央処理ユニット(CPU)で
    あって、各CPUが、他のCPUとは独立したタイミン
    グで命令の実行を制御するための独立したクロックを有
    し、複数の命令の実行の後に定期的にI/O動作要求を
    発する前記複数のCPUと、 前記複数のCPUから前記定期的なI/O動作要求を入
    力し、該I/O動作要求をボートする手段と、 前記CPUのI/O動作のクロック長を制御する同期手
    段であって、各前記CPUが要求したI/O動作のため
    に該CPUが使用したクロックサイクル数を調べる手段
    と、前記クロックサイクル数を比較して、前記I/O動
    作に関する最長のクロック長を検出する手段と、各前記
    CPUにおける前記I/O動作のためのクロック長が前
    記最長のクロック長となるよう制御する手段とを備えた
    前記同期手段とを具備したフォールトトレラント型コン
    ピュータシステム。
  12. 【請求項12】 所定数のクロックサイクルの後に割り
    込み信号を発生する手段と、 前記CPU同士を実時間に関して略整列させるために、
    前記割り込み信号に応答して、異なるクロックサイクル
    数の間、前記CPUを一時機能停止させる手段とをさら
    に具備した請求項11に記載のフォールトトレラント型
    コンピュータシステム。
  13. 【請求項13】 前記CPUの数がN個であって、前記
    クロックサイクル数を調べる手段がN個のカウンタをN
    グループ備えており、各前記グループが、各前記CPU
    とは独立にクロックサイクルをカウントする請求項11
    に記載のフォールトトレラント型コンピュータシステ
    ム。
  14. 【請求項14】 前記同期手段が、各前記CPUがI/
    O動作要求を開始した時、各前記グループ内の1つのカ
    ウンタにクロックイネーブル信号を与える手段をさらに
    具備した請求項13に記載のフォールトトレラント型コ
    ンピュータシステム。
  15. 【請求項15】 前記ボートする手段が、略同時にすべ
    ての前記カウンタを不能化するI/O動作完了を示す信
    号を出力する請求項14に記載のフォールトトレラント
    型コンピュータシステム。
  16. 【請求項16】 前記比較する手段が、各前記カウンタ
    のグループに接続されていて、前記グループ内の前記N
    個のカウンタの出力を入力し、前記グループにおける最
    長のカウント長を検出し、該最長のカウント長を前記制
    御する手段に与える手段を備えている請求項13に記載
    のフォールトトレラント型コンピュータシステム。
  17. 【請求項17】 前記同期手段が、前記グループ内のそ
    れぞれの前記カウンタが有効なカウント値を有するか否
    かを判定するエラーボート手段をさらに備えている請求
    項16に記載のフォールトトレラント型コンピュータシ
    ステム。
  18. 【請求項18】 前記定期的なI/O動作要求を入力す
    る手段が、各前記CPUに接続されたメモリモジュール
    を備えている請求項11に記載のフォールトトレラント
    型コンピュータシステム。
  19. 【請求項19】 命令ストリームを処理し、外部装置と
    の通信を行うフォールトトレラント型コンピュータシス
    テムであって、 略同じ命令ストリームを実行し、略同一の構成を有する
    第1、第2および第3の中央プロセッサユニット(CP
    U)であって、各前記CPUが独立したクロックを有
    し、さらに、前記命令ストリームが複数のクロックサイ
    クルにわたって前記CPUの間で非同期的に実行される
    よう、前記クロックが前記命令ストリームの実行のタイ
    ミングをとるようになった前記第1、第2および第3の
    CPUと、 1つまたは2つ以上のメモリモジュールと、 前記第1、第2および第3のCPUならびに前記1つま
    たは2つ以上のメモリモジュールに接続されていて、前
    記CPUのI/O動作中において、前記CPUによる前
    記メモリモジュールおよび前記外部装置に対するアクセ
    スを可能にするバス手段と、 前記I/O動作中、各前記CPUごとに同じ量、前記C
    PUを一時機能停止させる手段と、 前記CPU同士を実時間に関して略整列させるために、
    前記CPUを異なる一時機能停止時間長にわたり定期的
    に一時機能停止させる手段とを具備したフォールトトレ
    ラント型コンピュータシステム。
  20. 【請求項20】 前記メモリモジュールと前記外部装置
    との間に接続された第1のI/Oプロセッサおよび第2
    のI/Oプロセッサをさらに備えた請求項19に記載の
    フォールトトレラント型コンピュータシステム。
  21. 【請求項21】 各前記CPUごとに独立に与えられる
    クロックサイクルで、同じ命令ストリームを実行する複
    数の中央プロセッサユニット(CPU)を備えたフォー
    ルトトレラント型コンピュータシステムを同期させる方
    法であって、 各前記CPUのローカルクロックサイクルを他の前記C
    PUの各々に与える工程と、 前記CPUによるI/O動作要求を検出し、各前記CP
    Uにおける前記ローカルクロックサイクルのカウントを
    開始するためのカウント開始信号を出力する工程と、 各前記CPUが自己のローカルクロックおよび他の前記
    CPUのローカルクロックのクロックサイクルをカウン
    トするよう、前記I/O動作要求を検出しカウントする
    工程を繰り返す工程と、 各前記CPUが各前記CPUに対応するI/Oカウント
    値を有するよう、前記I/O動作の終わりを検出し、各
    前記CPU内におけるクロックサイクルのカウントを停
    止する工程と、 各前記CPU内におけるカウント値を比較し、最長のカ
    ウント値を検出する工程と、 各前記CPUごとに、ローカルカウント値と前記最大の
    カウント値との差を検出し、該差を待ちカウント値とし
    て出力する工程と、 前記CPUの前記待ちカウント値に対応する数のクロッ
    クサイクルにわたり各前記CPUを一時機能停止する工
    程と、 前記待ちカウント値に対応する一時機能停止が完了した
    後、前記命令ストリームの処理を続行するために各前記
    CPUのを開放する工程とからなり、各前記CPUが前
    記I/O動作について同じ数のクロックサイクルを使用
    するよう強制されることを特徴とする方法。
  22. 【請求項22】 複数のプロセッサモジュールであっ
    て、各前記プロセッサモジュールが、命令ストリームを
    実行するものであり、前記命令の実行タイミングを制御
    するクロック信号を発生する独立したクロックを有し、
    各前記プロセッサモジュールがI/O動作要求を定期的
    に発生し、該I/O動作要求が前記プロセッサモジュー
    ル間において非同期的に発生されるようになった前記複
    数のプロセッサモジュールと、 前記I/O動作要求を入力し、要求されたI/O動作が
    完了したときに前記プロセッサモジュールに対して確認
    信号を出力する手段とを具備し、各前記プロセッサモジ
    ュールが、 各前記プロセッサモジュールごとの前記I/O動作の長
    さを検出する手段と、 1または2つ以上の前記プロセッサモジュールについて
    前記I/O動作の長さのエラーを検出する手段とを備え
    たことを特徴とする、命令ストリームを処理するフォー
    ルトトレラント型コンピュータシステム。
  23. 【請求項23】 各前記プロセッサモジュールにおける
    前記長さを検出する手段が、前記プロセッサモジュール
    の数と同数であって各前記プロセッサモジュールからの
    クロック信号をカウントする複数のカウンタを備えてい
    る請求項22に記載のフォールトトレラント型コンピュ
    ータシステム。
  24. 【請求項24】 各前記カウンタが、対応する前記プロ
    セッサモジュールからカウンタイネーブル信号を入力
    し、該カウントイネーブル信号が、前記対応するプロセ
    ッサモジュールのI/O動作中において前記カウンタの
    カウントを可能化するものである請求項23に記載のフ
    ォールトトレラント型コンピュータシステム。
  25. 【請求項25】 前記エラーを検出する手段が、前記複
    数のプロセッサモジュールによって与えられる前記カウ
    ンタイネーブル信号の複数のサンプルを比較し、1つの
    前記プロセッサモジュールにおけるエラーを検出する請
    求項24に記載のフォールトトレラント型コンピュータ
    システム。
  26. 【請求項26】 前記エラーを検出する手段が、検出さ
    れたエラーに応答して、他の前記プロセッサモジュール
    の各々にエラー信号を出力する請求項22に記載のフォ
    ールトトレラント型コンピュータシステム。
  27. 【請求項27】 各前記プロセッサモジュールが、前記
    長さを検出する手段から各前記プロセッサモジュールの
    前記I/O動作の長さを入力し、前記I/O動作の長さ
    を比較することにより最長のI/O動作の長さを検出す
    る請求項22に記載のフォールトトレラント型コンピュ
    ータシステム。
  28. 【請求項28】 前記比較する手段が、前記エラーを検
    出する手段によってエラーが検出されたI/O動作の長
    さを、前記比較の対象から除外する請求項27に記載の
    フォールトトレラント型コンピュータシステム。
  29. 【請求項29】 各前記プロセッサモジュールが、 前記最長のI/O動作の長さを入力し、該最長のI/O
    動作の長さから前記ローカルプロセッサモジュールのI
    /O動作の長さを減算することによって、I/O動作の
    長さの差を求める手段と、 前記I/O動作の長さの差に対応する時間にわたり、前
    記プロセッサモジュールを一時機能停止する手段とを備
    えた請求項27に記載のフォールトトレラント型コンピ
    ュータシステム。
  30. 【請求項30】 前記複数のカウンタイネーブル信号の
    サンプルが、前記確認信号がローカルの前記プロセッサ
    モジュールに入力された時によって決定されるサンプリ
    ングウィンドウにおいて検出される請求項25に記載の
    フォールトトレラント型コンピュータシステム。
JP6056577A 1993-03-02 1994-03-02 フォールトトレラント型コンピュータシステム Pending JPH0773059A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US2528393A 1993-03-02 1993-03-02
US08/025283 1993-03-02

Publications (1)

Publication Number Publication Date
JPH0773059A true JPH0773059A (ja) 1995-03-17

Family

ID=21825119

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6056577A Pending JPH0773059A (ja) 1993-03-02 1994-03-02 フォールトトレラント型コンピュータシステム

Country Status (2)

Country Link
US (1) US5845060A (ja)
JP (1) JPH0773059A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007502476A (ja) * 2003-05-15 2007-02-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ホストコントローラ
JP2007249518A (ja) * 2006-03-15 2007-09-27 Nec Corp データ処理装置とその同期方法
US7474581B2 (en) 2006-02-07 2009-01-06 Nec Corporation Memory synchronization method and refresh control circuit
JP2009193504A (ja) * 2008-02-18 2009-08-27 Nec Corp フォルトトレラントコンピュータ、同期制御方法、及びプログラム
JP2009251854A (ja) * 2008-04-04 2009-10-29 Nec Corp データ処理装置及び同期方法
JP2010211250A (ja) * 2009-03-06 2010-09-24 Nec Corp フォールトトレラントコンピュータ及びそのタイミング調整方法
US8041995B2 (en) 2004-12-20 2011-10-18 Nec Corporation Method and system for resetting fault tolerant computer system
CN113110124A (zh) * 2021-03-11 2021-07-13 上海新时达电气股份有限公司 双mcu控制方法及控制系统

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3502216B2 (ja) * 1995-07-13 2004-03-02 富士通株式会社 情報処理装置
US5802265A (en) * 1995-12-01 1998-09-01 Stratus Computer, Inc. Transparent fault tolerant computer system
US5734849A (en) * 1996-07-01 1998-03-31 Sun Microsystems, Inc. Dual bus memory transactions using address bus for data transfer
US6058491A (en) * 1997-09-15 2000-05-02 International Business Machines Corporation Method and system for fault-handling to improve reliability of a data-processing system
US6055660A (en) * 1997-10-02 2000-04-25 International Business Machines Corporation Method for identifying SMP bus transfer errors
US6275948B1 (en) * 1997-11-14 2001-08-14 Agere Systems Guardian Corp. Processor powerdown operation using intermittent bursts of instruction clock
US6374364B1 (en) * 1998-01-20 2002-04-16 Honeywell International, Inc. Fault tolerant computing system using instruction counting
US6158015A (en) * 1998-03-30 2000-12-05 Micron Electronics, Inc. Apparatus for swapping, adding or removing a processor in an operating computer system
US6108732A (en) * 1998-03-30 2000-08-22 Micron Electronics, Inc. Method for swapping, adding or removing a processor in an operating computer system
DE19844562B4 (de) * 1998-09-29 2006-06-01 Dr. Johannes Heidenhain Gmbh Verfahren zur sicheren Überwachung von Taktraten in einem redundanten System
US6567376B1 (en) 1999-02-25 2003-05-20 Telefonaktiebolaget Lm Ericsson (Publ) Using system frame number to implement timers in telecommunications system having redundancy
US6625572B1 (en) * 1999-12-22 2003-09-23 Lsi Logic Corporation Cycle modeling in cycle accurate software simulators of hardware modules for software/software cross-simulation and hardware/software co-simulation
US6687851B1 (en) * 2000-04-13 2004-02-03 Stratus Technologies Bermuda Ltd. Method and system for upgrading fault-tolerant systems
US6820213B1 (en) 2000-04-13 2004-11-16 Stratus Technologies Bermuda, Ltd. Fault-tolerant computer system with voter delay buffer
US6691225B1 (en) 2000-04-14 2004-02-10 Stratus Technologies Bermuda Ltd. Method and apparatus for deterministically booting a computer system having redundant components
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
US6874102B2 (en) * 2001-03-05 2005-03-29 Stratus Technologies Bermuda Ltd. Coordinated recalibration of high bandwidth memories in a multiprocessor computer
US6708284B2 (en) * 2001-03-30 2004-03-16 Intel Corporation Method and apparatus for improving reliability in microprocessors
US6928583B2 (en) 2001-04-11 2005-08-09 Stratus Technologies Bermuda Ltd. Apparatus and method for two computing elements in a fault-tolerant server to execute instructions in lockstep
US20030093570A1 (en) * 2001-06-25 2003-05-15 Bissett Thomas D. Fault tolerant processing
US6981165B2 (en) * 2002-09-03 2005-12-27 International Business Machines Corporation Method and apparatus for handling an interrupt from a real-time clock to increment a program clock
GB2396446B (en) * 2002-12-20 2005-11-16 Picochip Designs Ltd Array synchronization
US7467326B2 (en) 2003-02-28 2008-12-16 Maxwell Technologies, Inc. Self-correcting computer
US7146530B2 (en) * 2003-07-18 2006-12-05 Hewlett-Packard Development Company, L.P. Targeted fault tolerance by special CPU instructions
US20050273653A1 (en) * 2004-05-19 2005-12-08 Honeywell International Inc. Single fault tolerance in an architecture with redundant systems
JP3897046B2 (ja) * 2005-01-28 2007-03-22 横河電機株式会社 情報処理装置および情報処理方法
US7346793B2 (en) * 2005-02-10 2008-03-18 Northrop Grumman Corporation Synchronization of multiple operational flight programs
US8527741B2 (en) * 2005-07-05 2013-09-03 Viasat, Inc. System for selectively synchronizing high-assurance software tasks on multiple processors at a software routine level
US8190877B2 (en) * 2005-07-05 2012-05-29 Viasat, Inc. Trusted cryptographic processor
US7802075B2 (en) * 2005-07-05 2010-09-21 Viasat, Inc. Synchronized high-assurance circuits
EP1907937A4 (en) * 2005-07-05 2010-01-13 Viasat Inc SYNCHRONIZED HIGH INSURANCE CIRCUITS
US8074059B2 (en) 2005-09-02 2011-12-06 Binl ATE, LLC System and method for performing deterministic processing
DE102005055067A1 (de) * 2005-11-18 2007-05-24 Robert Bosch Gmbh Vorrichtung und Verfahren zum Beheben von Fehlern bei einem wenigstens zwei Ausführungseinheiten mit Registern aufweisenden System
US8036379B2 (en) * 2006-03-15 2011-10-11 Microsoft Corporation Cryptographic processing
US8301936B2 (en) * 2006-11-02 2012-10-30 Nec Corporation Apparatus and method for performing a screening test of semiconductor integrated circuits
US8074109B1 (en) * 2006-11-14 2011-12-06 Unisys Corporation Third-party voting to select a master processor within a multi-processor computer
CN100371851C (zh) * 2006-11-27 2008-02-27 杭州华三通信技术有限公司 时间同步方法及装置
US7729463B2 (en) * 2006-12-22 2010-06-01 Newport Media, Inc. Host processor assisted fast re-synchronization techniques for DVB-H systems
US7840703B2 (en) 2007-08-27 2010-11-23 International Business Machines Corporation System and method for dynamically supporting indirect routing within a multi-tiered full-graph interconnect architecture
US8140731B2 (en) * 2007-08-27 2012-03-20 International Business Machines Corporation System for data processing using a multi-tiered full-graph interconnect architecture
US7769892B2 (en) * 2007-08-27 2010-08-03 International Business Machines Corporation System and method for handling indirect routing of information between supernodes of a multi-tiered full-graph interconnect architecture
US8108545B2 (en) * 2007-08-27 2012-01-31 International Business Machines Corporation Packet coalescing in virtual channels of a data processing system in a multi-tiered full-graph interconnect architecture
US7769891B2 (en) 2007-08-27 2010-08-03 International Business Machines Corporation System and method for providing multiple redundant direct routes between supernodes of a multi-tiered full-graph interconnect architecture
US8185896B2 (en) * 2007-08-27 2012-05-22 International Business Machines Corporation Method for data processing using a multi-tiered full-graph interconnect architecture
US7809970B2 (en) * 2007-08-27 2010-10-05 International Business Machines Corporation System and method for providing a high-speed message passing interface for barrier operations in a multi-tiered full-graph interconnect architecture
US7822889B2 (en) 2007-08-27 2010-10-26 International Business Machines Corporation Direct/indirect transmission of information using a multi-tiered full-graph interconnect architecture
US7904590B2 (en) * 2007-08-27 2011-03-08 International Business Machines Corporation Routing information through a data processing system implementing a multi-tiered full-graph interconnect architecture
US7958182B2 (en) * 2007-08-27 2011-06-07 International Business Machines Corporation Providing full hardware support of collective operations in a multi-tiered full-graph interconnect architecture
US8014387B2 (en) 2007-08-27 2011-09-06 International Business Machines Corporation Providing a fully non-blocking switch in a supernode of a multi-tiered full-graph interconnect architecture
US7958183B2 (en) * 2007-08-27 2011-06-07 International Business Machines Corporation Performing collective operations using software setup and partial software execution at leaf nodes in a multi-tiered full-graph interconnect architecture
US7793158B2 (en) 2007-08-27 2010-09-07 International Business Machines Corporation Providing reliability of communication between supernodes of a multi-tiered full-graph interconnect architecture
US8234652B2 (en) * 2007-08-28 2012-07-31 International Business Machines Corporation Performing setup operations for receiving different amounts of data while processors are performing message passing interface tasks
US8312464B2 (en) * 2007-08-28 2012-11-13 International Business Machines Corporation Hardware based dynamic load balancing of message passing interface tasks by modifying tasks
US8127300B2 (en) * 2007-08-28 2012-02-28 International Business Machines Corporation Hardware based dynamic load balancing of message passing interface tasks
US8108876B2 (en) 2007-08-28 2012-01-31 International Business Machines Corporation Modifying an operation of one or more processors executing message passing interface tasks
US20090064166A1 (en) * 2007-08-28 2009-03-05 Arimilli Lakshminarayana B System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks
US7827428B2 (en) * 2007-08-31 2010-11-02 International Business Machines Corporation System for providing a cluster-wide system clock in a multi-tiered full-graph interconnect architecture
US7921316B2 (en) 2007-09-11 2011-04-05 International Business Machines Corporation Cluster-wide system clock in a multi-tiered full-graph interconnect architecture
GB2454865B (en) 2007-11-05 2012-06-13 Picochip Designs Ltd Power control
US7779148B2 (en) * 2008-02-01 2010-08-17 International Business Machines Corporation Dynamic routing based on information of not responded active source requests quantity received in broadcast heartbeat signal and stored in local data structure for other processor chips
US8077602B2 (en) 2008-02-01 2011-12-13 International Business Machines Corporation Performing dynamic request routing based on broadcast queue depths
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
JP4709268B2 (ja) * 2008-11-28 2011-06-22 日立オートモティブシステムズ株式会社 車両制御用マルチコアシステムまたは内燃機関の制御装置
US8171328B2 (en) * 2008-12-31 2012-05-01 Intel Corporation State history storage for synchronizing redundant processors
GB2470037B (en) 2009-05-07 2013-07-10 Picochip Designs Ltd Methods and devices for reducing interference in an uplink
US8578382B2 (en) * 2009-05-19 2013-11-05 Qualcomm Incorporated Associating data for events occurring in software threads with synchronized clock cycle counters
GB2470891B (en) 2009-06-05 2013-11-27 Picochip Designs Ltd A method and device in a communication network
GB2470771B (en) 2009-06-05 2012-07-18 Picochip Designs Ltd A method and device in a communication network
US8564616B1 (en) 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8592711B2 (en) * 2009-10-01 2013-11-26 George H. Lambert Apparatus and method of electronically impregnating a wear-resistant cutting edge
GB2474071B (en) 2009-10-05 2013-08-07 Picochip Designs Ltd Femtocell base station
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
DE102009050161A1 (de) * 2009-10-21 2011-04-28 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten
GB2482869B (en) 2010-08-16 2013-11-06 Picochip Designs Ltd Femtocell access control
GB2489716B (en) 2011-04-05 2015-06-24 Intel Corp Multimode base system
GB2489919B (en) 2011-04-05 2018-02-14 Intel Corp Filter
GB2491098B (en) 2011-05-16 2015-05-20 Intel Corp Accessing a base station
US9256426B2 (en) 2012-09-14 2016-02-09 General Electric Company Controlling total number of instructions executed to a desired number after iterations of monitoring for successively less number of instructions until a predetermined time period elapse
US9342358B2 (en) 2012-09-14 2016-05-17 General Electric Company System and method for synchronizing processor instruction execution
US9129071B2 (en) * 2012-10-24 2015-09-08 Texas Instruments Incorporated Coherence controller slot architecture allowing zero latency write commit
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
US9509804B2 (en) 2012-12-21 2016-11-29 Akami Technologies, Inc. Scalable content delivery network request handling mechanism to support a request processing layer
KR20170045795A (ko) * 2015-10-20 2017-04-28 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10089194B2 (en) * 2016-06-08 2018-10-02 Qualcomm Incorporated System and method for false pass detection in lockstep dual core or triple modular redundancy (TMR) systems
JP6818659B2 (ja) * 2017-09-11 2021-01-20 三菱電機株式会社 クロック信号検査装置、プラント監視制御装置、およびクロック信号検査装置の診断方法
CN110647490B (zh) * 2019-10-22 2021-09-07 深圳市康冠智能科技有限公司 数据传输方法、装置、设备以及计算机存储介质
CN111538369B (zh) * 2020-04-17 2021-09-24 北京中科宇航技术有限公司 一种三模冗余计算机时钟同步方法及其系统
CN112835847B (zh) * 2021-02-05 2023-03-10 中国电子科技集团公司第五十八研究所 一种用于互联裸芯的分布式中断传输方法及其系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1985002698A1 (en) * 1983-12-12 1985-06-20 Parallel Computers, Inc. Computer processor controller
US4589066A (en) * 1984-05-31 1986-05-13 General Electric Company Fault tolerant, frame synchronization for multiple processor systems
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
CA2003338A1 (en) * 1987-11-09 1990-06-09 Richard W. Cutts, Jr. Synchronization of fault-tolerant computer system having multiple processors
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US5222237A (en) * 1988-02-02 1993-06-22 Thinking Machines Corporation Apparatus for aligning the operation of a plurality of processors
US4937741A (en) * 1988-04-28 1990-06-26 The Charles Stark Draper Laboratory, Inc. Synchronization of fault-tolerant parallel processing systems
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5327553A (en) * 1989-12-22 1994-07-05 Tandem Computers Incorporated Fault-tolerant computer system with /CONFIG filesystem
ES2079433T3 (es) * 1990-06-01 1996-01-16 Bell Telephone Mfg Metodo para modificar un sistema de procesamiento tolerante a fallos.
US5226152A (en) * 1990-12-07 1993-07-06 Motorola, Inc. Functional lockstep arrangement for redundant processors
US5233615A (en) * 1991-06-06 1993-08-03 Honeywell Inc. Interrupt driven, separately clocked, fault tolerant processor synchronization

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007502476A (ja) * 2003-05-15 2007-02-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ホストコントローラ
US8041995B2 (en) 2004-12-20 2011-10-18 Nec Corporation Method and system for resetting fault tolerant computer system
US7474581B2 (en) 2006-02-07 2009-01-06 Nec Corporation Memory synchronization method and refresh control circuit
JP2007249518A (ja) * 2006-03-15 2007-09-27 Nec Corp データ処理装置とその同期方法
JP2009193504A (ja) * 2008-02-18 2009-08-27 Nec Corp フォルトトレラントコンピュータ、同期制御方法、及びプログラム
JP2009251854A (ja) * 2008-04-04 2009-10-29 Nec Corp データ処理装置及び同期方法
JP2010211250A (ja) * 2009-03-06 2010-09-24 Nec Corp フォールトトレラントコンピュータ及びそのタイミング調整方法
CN113110124A (zh) * 2021-03-11 2021-07-13 上海新时达电气股份有限公司 双mcu控制方法及控制系统
CN113110124B (zh) * 2021-03-11 2022-08-19 上海新时达电气股份有限公司 双mcu控制方法及控制系统

Also Published As

Publication number Publication date
US5845060A (en) 1998-12-01

Similar Documents

Publication Publication Date Title
JPH0773059A (ja) フォールトトレラント型コンピュータシステム
US5226152A (en) Functional lockstep arrangement for redundant processors
US5255367A (en) Fault tolerant, synchronized twin computer system with error checking of I/O communication
US5384906A (en) Method and apparatus for synchronizing a plurality of processors
US5317726A (en) Multiple-processor computer system with asynchronous execution of identical code streams
US4916704A (en) Interface of non-fault tolerant components to fault tolerant system
US5099485A (en) Fault tolerant computer systems with fault isolation and repair
US4907228A (en) Dual-rail processor with error checking at single rail interfaces
US5249187A (en) Dual rail processors with error checking on I/O reads
EP0372579B1 (en) High-performance computer system with fault-tolerant capability; method for operating such a system
US5185877A (en) Protocol for transfer of DMA data
US7493517B2 (en) Fault tolerant computer system and a synchronization method for the same
JPH05128080A (ja) 情報処理装置
JPH0792765B2 (ja) 入/出力コントローラ
JPH0734179B2 (ja) 複数の異種データ処理チヤンネルを有する自動飛行制御装置
US5048022A (en) Memory device with transfer of ECC signals on time division multiplexed bidirectional lines
US5163138A (en) Protocol for read write transfers via switching logic by transmitting and retransmitting an address
US5473770A (en) Fault-tolerant computer system with hidden local memory refresh
EP0411805B1 (en) Bulk memory transfer during resync
US20040193735A1 (en) Method and circuit arrangement for synchronization of synchronously or asynchronously clocked processor units
EP0416732B1 (en) Targeted resets in a data processor
JP3415636B2 (ja) プロセッサ装置
JPH064301A (ja) 時分割割込制御方式
JPH0594325A (ja) 監視制御装置

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees
S631 Written request for registration of reclamation of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313631

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370