JPH079626B2 - 多重プロセッサを備えたフォールトトレラントなコンピュータシステム - Google Patents

多重プロセッサを備えたフォールトトレラントなコンピュータシステム

Info

Publication number
JPH079626B2
JPH079626B2 JP1322463A JP32246389A JPH079626B2 JP H079626 B2 JPH079626 B2 JP H079626B2 JP 1322463 A JP1322463 A JP 1322463A JP 32246389 A JP32246389 A JP 32246389A JP H079626 B2 JPH079626 B2 JP H079626B2
Authority
JP
Japan
Prior art keywords
processor
cpu
memory
cpus
processors
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.)
Expired - Fee Related
Application number
JP1322463A
Other languages
English (en)
Other versions
JPH02202638A (ja
Inventor
リチャード・ダブリュー・カッツ・ジュニア
ダグラス・イー・ジュウエット
リチャード・エー・サウスワース
ケニス・シー・ディベッカー
ニキール・エー・メータ
ジョン・デイビッド・アリソン
ロバート・ダブリュー・ホースト
Original Assignee
タンデム・コンピューターズ・インコーポレイテッド
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 タンデム・コンピューターズ・インコーポレイテッド filed Critical タンデム・コンピューターズ・インコーポレイテッド
Publication of JPH02202638A publication Critical patent/JPH02202638A/ja
Publication of JPH079626B2 publication Critical patent/JPH079626B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/183Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components
    • G06F11/184Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality
    • G06F11/185Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits by voting, the voting not being performed by the redundant components where the redundant components implement processing functionality and the voting is itself performed redundantly
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • 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/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/1687Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
    • 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
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2017Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where memory access, memory control or I/O control functionality is redundant
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
    • G06F11/1645Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components and the comparison itself uses redundant hardware
    • 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/1679Temporal synchronisation or re-synchronisation of redundant processing components at clock signal 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/181Eliminating the failing redundant component
    • 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/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/182Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2002Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
    • G06F11/2007Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies

Description

【発明の詳細な説明】 (産業上の利用分野) この発明は、コンピュータシステムに関し、より詳細に
は、多重CPUを用いたフォールトトレラント(fault−to
lerant)システムにおける同期法に関する。
(従来の技術と発明が解決しようとする課題) 高信頼性のデジタル処理、冗長性を用いた様々なコンピ
ュータアーキテクチャにおいて達成される。例えば、TM
R(3重・モジュラ・冗長性)システムは、同じ命令の
ストリーム(流れ)を実行する3個のCPUを、機能を重
複する3個の分離した主メモリユニットと分離したI/O
装置と共に使用できる。そのため、もし各タイプの要素
の中の1つが誤りをしても、システムは動作し続ける。
他のフォールトトレラントタイプのシステムが、カッツ
マン等に対して発行されタンデム・コンピューターズ・
インコーポレイテッドに対して譲渡された「多重プロセ
ッサシステム」と題する米国特許第4,228,496号に示さ
れる。様々な方法が、冗長性システムにおいて装置を同
期させるために使用されて来た。例えば、「多重プロセ
ッサを同期させるための方法と装置」と題するアール・
ダブリュウ・ホーストにより1987年11月9日に出願さ
れ、同様にタンデム・コンピューターズ・インコーポレ
イテッドに譲渡された米国特許出願第118,503号におい
て、「緩い」同期法が開示されているが、これは、「フ
ォールトトレラント計算のための中央処理装置」と題さ
れストラス・コンピュータ・インコーポレイテッドに譲
渡された米国特許第4,453,215号において示されている
ような単独のクロックを用いたロック・ステップ同期を
使用した他のシステムと対照的である。「同期ボーティ
ング(synchronization voting)」と呼ばれる技法がデ
ビス(Davies)及びウエイカリ(Wakerly)著「冗長性
システムにおける同期とマッチング」(IEEEトランザク
ションズ・オン・コンピュータ(IEEE Transactions on
computer),1978年6月号531−539ページ)に開示され
ている。
冗長性のフォールトトレラントシステムにおける割り込
み同期の方法が、ヨンディ(Yondea)ほか著「緩く同期
したTMRシステムのための割り込み取り扱いの実行」
(フォールトトレラント計算についての第15回年次シン
ポジウムのプロシーディング(1985年6月)246−251ペ
ージ)に開示されている。「フォールトトレラントリア
ルタイムクロック」と題する米国特許第4,644,498号
は、TMRコンピュータシステムにおける使用のための3
重モジュラ冗長性クロック構成を開示している。「多重
に冗長なコンピュータのフレーム同期」と題する米国特
許第4,733,353号は、同期フレームを実行することによ
り周期的に同期される別々のクロックで動作するCPUを
用いる同期法を開示している。
25MHzで動作するインテル80386やモトローラ68030のよ
うな高性能マイクロプロセッサ装置が、高速クロックと
大きな能力を備えて使用できるようになった。また、メ
モリ、ディスクドライブなどのコンピュータシステムの
他の要素もこれに対応してより安価にかつより大きな能
力を備えるようになった。このため、高信頼性のプロセ
ッサが同じ傾向に追随することが要求されている。さら
に、コンピュータ産業におけるいくつかのオペレーティ
ングシステムでの標準化は、アプリケーションソフトウ
エアの利用性を大きく拡大した。そのため、同様な要求
が高信頼性システムの分野でもなされ、すなわち、標準
的オペレーティングシステムを利用できる必要がある。
したがって、この発明の主な目的は、特にフォールトト
レラントタイプの改良された高信頼性コンピュータシス
テムを提供することである。この発明の他の目的は、改
良された冗長性でフォールトトレラントタイプのコンピ
ュータシステムであって、高性能と低コストが両立する
ものを提供することである。特に、改良されたシステム
が、高度に冗長なシステムにおいて通常生じる実行負荷
を避けることが好ましい。この発明の別の目的は、速度
とソフトウエアの両立性とともに信頼性について測定さ
れる場合に、性能が改良されている一方、コストも他の
より低い性能のコンピュータシステムと同じぐらいであ
る高信頼性コンピュータシステムを提供することであ
る。この発明のさらに他の目的は、デマンドページング
を用いた仮想メモリ管理を使用し、保護された(上位か
らの監視、すなわち「核(カーネル:kernel)」)モー
ドを備えたオペレーティングシステムを実行できる高信
頼性コンピュータシステムを提供することである。とく
に、オペレーティングシステムは、多重プロセスの実行
が、すべて高レベルの性能で可能でなければならない。
(課題を解決するための手段、作用及び発明の効果) この発明の一実施例によれば、コンピュータシステム
は、典型的には同じ命令ストリームを実行する3個の同
一のCPUを使用し、同じデータの複製を格納する2個の
同一の自己診断メモリモジュールを備える。したがっ
て、古典的TMRシステムにおけるような3個のCPUと3個
のメモリよりはむしろ、3個のCPUと2個のメモリの構
成が使用される。3個のCPUによるメモリ参照(memory
reference)は、2個のメモリの各の3個の別のポート
に接続された3個のバスにより行われる。フォールトト
レラント動作の実行負荷を全CPU自身に課することを避
けるため、また、フォールトトレラントクロック動作の
費用、複雑さ及びタイミングの問題を課することを避け
るため、3個のCPUはそれぞれ、それ自身のために独立
したクロックを別々に備えるが、メモリ参照のようなイ
ベント(event)を検出することにより、すべてのCPU
が、同時に機能を実行するまで他のCPUの前にある任意
のCPUをストールすることにより、緩く同期されてい
る。割り込みもまた、全CPUに同期され、全CPUが命令ス
トリームの同じ点で割り込みを実行することを保証す
る。別々のCPU-メモリ・バスを介しての3個の非同期の
メモリ参照は、メモリ要求のときに各メモリモジュール
の3個の別々のポートでボートされるが、リードデータ
は、全CPUに戻されたときにボートされない。
2個のメモリは、共に、全CPUまたは全I/O(すなわち入
力/出力)バスから受け取ったすべてのライト要求を実
行するので、両メモリは、最新に保たれる。しかし、た
だ1個のメモリモジュールは、リード要求に対応して全
CPUまたはI/Oバスに戻る。リードデータを作る1個のメ
モリモジュールが「プライマリ」(「主」)と呼ばれ、
他方はバックアップである。従って、入って来るデータ
は、ただ1つのソースからであり、ボートされない。2
個のメモリモジュールへのメモリ要求は、ボート続行中
は実行されるが、従って、リードデータは、最後のCPU
が要求を行った後で少し遅れて全CPUに対し利用でき
る。これらのメモリモジュールのために使用されるDRAM
が単にリード動作を行いリフレッシュするためにライト
サイクルの大部分を使用するので、ライトサイクルでさ
えも実質的に重視し得る。そこで、ライトサイクルの最
後の部分のためにストローブされないならば、リード動
作は非破壊的でない。従って、ライトサイクルは、最初
のCPUが要求をすると直ちに開始されるが、最後の要求
が受信され、良好であるとボートされるまで完了しな
い。ボートされないリードデータの戻りと重なったアク
セスの特徴は、高性能のフォールトトレラント動作を、
最小の複雑さと費用で可能にする。
I/O機能は、2つの同一のI/Oバス(各バスはただ1個の
メモリモジュールと別々に接続される)を用いて実行さ
れる。多数のI/Oプロセッサが2つのI/Oバスに接続さ
れ、I/O装置は、複数の対のI/Oプロセッサに接続される
が、ただ1個のI/Oプロセッサによってアクセスされ
る。1個のメモリモジュールがプライマリとして表され
るので、このモジュールのためのただ1個のI/Oバス
が、全I/Oプロセッサを制御する。そして、メモリモジ
ュールとI/Oとの間のトラフィックは、ボート(vote)
されない。全CPUは全I/Oプロセッサをメモリモジュール
を介してアクセスできる。(ここで、各アクセスは、ま
さにメモリアクセスがボートされるようにボートされ
る。)しかし、全I/Oプロセッサは、全メモリモジュー
ルをアクセスできるだけであり、全CPUをアクセスでき
ない。全I/Oプロセッサは、全CPUに割り込みを送ること
ができるだけであり、この割り込みは、全CPUに示され
る前にメモリモジュール内に集められる。こうして、I/
O装置アクセスのための同期オーバヘッドは、全CPUにと
って重荷にならず、フォールトトレラント性が備えられ
る。もし1個のI/Oプロセッサが誤ったならば、その対
の他方のI/Oプロセッサが、オペレーティングシステム
により維持されるI/Oページテーブル内のI/O装置に対し
て用いられるアドレスを単に変えるだけで、このI/Oプ
ロセッサのためのI/O装置の制御を代わって行うことが
できる。このように、I/O装置のフォールトトレラント
性と再統合は、システムシャットダウンなしに、そして
さらに、これらのI/Oバスにおけるボーティングに伴う
ハードウエア費用と実行ペナルティなしに可能である。
説明された実施例において使用されるメモリシステム
は、複数のレベルで階層的である。各CPUは、それ自身
のキャシュ(cache)を備え、本質的にCPUのクロック速
度で動作する。そこで、各CPUは、他のCPUによりアクセ
スできないローカルメモリを備え、仮想メモリ管理は、
オペレーティングシステムの核と現在のタスクのページ
を全3個のCPUのためのローカルメモリの中にあること
を許可し、課されたボーティングまたは同期のようなフ
ォールトトレラント性のオーバヘッドなしに高速でアク
セス可能にする。次に、グローバルメモリとして呼ばれ
るメモリモジュールレベルがあり、ここで、ボーティン
グと同期化が行われ、アクセスタイムの負荷が導入され
る。しかし、グローバルメモリの速度は、ディスクアク
セスよりもずっと速い。従って、このレベルは、デマン
ドページングの第1レベルのためにディスクを使用する
ためよりはむしろ、最速のエリアに最も使用されるデー
タを保つためのローカルメモリとの、ページのスワッピ
ングのために使用される。
この発明の開示された実施例の1つの特徴は、システム
をシャットダウンすることなしにCPUモジュールやメモ
リモジュールのような故障部品を交換する能力である。
こうして、このシステムは、部品が故障し、取り換えね
ばならない場合でさえも、連続的な使用ができる。さら
に、高レベルのフォールトトレラント性がより少ない部
品で達成できる。例えば、フォールトトレラントなクロ
ック動作が必要でなく、3個でなく2個のメモリモジュ
ールだけが必要であり、ボーティング回路が最小にでき
る。このことは、故障する部品が少なく、信頼性が増大
したことを意味する。すなわち、部品がより少ないの
で、故障がより少なく、故障があるとき、システムをラ
ンさせたまま、その部品が分離され、システムシャット
ダウンなしに取り換えできる。
このシステムのCPUは、好ましくは、UNIX(登録商標)
のようなオペレーティングシステムが使用可能な市販の
高性能マイクロプロセッサチップを使用する。システム
をフォールトトレラントにする部分は、オペレーティン
グシステムに対して透明であるか、またはオペレーティ
ングシステムに対して容易に適合できる。従って、高性
能なフォールトトレラントシステムは、一時的に広く使
用されるマルチタスクのオペレーティングシステムとア
プリケーションソフトウエアとの同等性を可能にして提
供される。
1つの実施例によれば、本発明は、複数のプロセッサを
緩く同期する方法と装置に向けられる。本発明による装
置は、フォールトトレラントなクロック回路を必要とせ
ずに故障検出装置又はフォールトトレラントな装置内に
2個以上のプロセッサが配置されることを可能にする。
プロセッサは、クロック速度の違いによって又は「追加
の」クロックサイクルの発生のため、同じアルゴリズム
を異なった速度で自由に実行できる。「追加の」クロッ
クサイクルは、エラーリトライやキャシュヒット速度の
変化のため、また、非同期論理の結果として発生し、あ
るプログラムを実行中には通常は起こらないクロックサ
イクルをいう。外部割り込みは、各プロセッサが、最大
の割り込み潜在時間について当然の考慮を払って実行中
に同じ点で割り込みに応答するように同期される。
本発明の1実施例では、各プロセッサは、それ自身の独
立のクロックからはずれる。プロセッサは、1本のライ
ンで所定のプロセッサイベントの発生を示し、ウエイト
ステートを開始するために他のラインで信号を受け取
る。プロセッサイベントは、明白にあるいはプロセッサ
でランされるコードによって内在的に定義できる。好ま
しくは、各マイクロプロセッサライト動作のために1つ
のプロセッサイベント信号を発生する。各プロセッサ
は、イベントカウンタ呼ばれるカウンタを備え、プロセ
ッサが同期された最後の時間以後に示されたプロセッサ
イベントの数を計数する。
この実施例では、システム設計者が自由に任意の同期イ
ベントを定義できるけれども、プロセッサは、典型的に
は、外部割り込みが起こった時にはいつでも同期され
る。各プロセッサに関連する比較回路は、システム内の
他の全イベントカウンタをテストし、その関連するプロ
セッサが他のプロセッサに遅れているか否かを決定す
る。もしそうならば、同期論理回路は、次のプロセッサ
イベントまでウエイト信号を除く。比較回路は、その関
連するプロセッサがなお遅れているか否かを次に再びチ
エックする。プロセッサは、そのイベントカウンタが最
速のプロセッサのイベントカウンタに一致すると最終的
に停止される。各イベントカウンタが同じ値となり全プ
ロセッサが停止されるまで、処理が続く。この点に達す
ると、プロセッサは、プログラムの同じ点ですべて停止
される。ウエイト信号は除かれ、各プロセッサへの割り
込みラインが主張され、全プロセッサが、同期イベント
を取り扱うために再スタートされる。
イベントカウンタがその最大値に達する前に同期イベン
トが起こらないならば、イベントカウンタのオーバーフ
ローが再同期を強行する。影響されたプロセッサは、続
行の前に、他のプロセッサのイベントカウンタもオーバ
ーフローするまでウエイトをする。他方、もし同期イベ
ントが発生するが、最悪の場合の割り込み潜在時間を満
足するほどプロセッサイベントがしばしば発生しないな
らば、サイクルカウンタとよばれる他のカウンタが、最
後のプロセッサイベント以後のプロセッサイベントの数
を計数するために備えられる。サイクルカウンタは、最
大の割り込み潜在時間を越える前の1点でオーバーフロ
ーするようにセットされる。サイクルカウンタのオーバ
ーフローは、割り込み同期要求信号と割り込み信号を発
生することにより再同期を強行する。プロセッサが割り
込みを供給するとき、割り込みルーチン内のコードは、
イベントを発生させるように強行する。こうして、内部
で発生された同期要求信号は、割り込みルーチンにより
発生されたイベントに対して再同期を起こさせる。次
に、全プロセッサは、未決定割り込みを供給できる。
他の実施例では、CPUの「ラン」サイクルがイベントカ
ウンタ(この場合はサイクルカウンタである)で計数さ
れる。すなわち、すべての非ストールサイクル(ここで
パイプラインが進む)が、計数されるイベントである。
ここで、外部割り込みの形での同期要求に際して、全CP
Uは、各CPUが、割り込みがそのCPUに対して示される前
に(同じサイクル計数で命令を実行して)同じイベント
にあるまでウエイトすることにより同期に保たれる。こ
うして、1個のCPUは、異なった「リアルタイム」に割
り込みを受け取り得るが、実行されている命令について
測れば他のCPUと同時に割り込みを受け取る。それで、C
PUは、割り込みによって必ずしも「リアルタイム」同期
には戻されない。この割り込み同期法は、他の同期技法
とともに使用される。後者では、外部メモリ参照がボー
トされ、全CPUが同じ参照をするまで(または誤りが検
出されるまで)メモリ参照が実施されず、そうして、リ
アルタイム同期を強行する。さらに、サイクルカウンタ
のオーバーフローは同期を生じ、そのため、もしメモリ
参照が選択された期間(サイクルカウンタレジスタの長
さによって表わされる)内に起こらないならば、同期動
作がCPUが余りに離れてドリフトしないように行われ
る。
(実施例) 以下、添付の図面を参照して本発明の実施例を説明す
る。
第1図を参照して、本発明の特徴を用いたコンピュータ
システムは、一実施例において、論理プロセッサとして
動作する3個の同一のプロセッサ11、12及び13(以下、
それぞれCPU-A,CPU-B及びCPU-Cという。)を備え、これ
ら3個は、典型的には同じ命令ストリームを実行する。
3個のプロセッサが同じ命令ストリームを実行しない唯
一の時間は、システム起動自己テスト、診断などの動作
である。3個のプロセッサは、2個のメモリモジュール
14と15(メモリ#1、メモリ#2と呼ばれる)と接続さ
れ、各メモリは、同じアドレス空間に同一のデータを格
納する。好ましい実施例においては、各プロセッサ11、
12及び13は、その固有のローカルメモリ16を含み、この
メモリを含むプロセッサによってのみアクセス可能であ
る。
各プロセッサ11、12及び13は、各メモリモジュール14と
15と同様に、それ自身の固有の別々のクロック発振器17
を備える。この実施例において、プロセッサは、「ロッ
クステップ」でランされず、その代わり、上述の米国出
願第118,503号で明らかにされたような方法により、す
なわち、これらのCPUを同期化させる外部メモリ参照の
ようなイベントを使用して、緩く同期される。外部の割
り込みは、各プロセッサから他の2個のプロセッサへ割
り込み要求とステイタスを結合するための1組のバスを
使用する技法によって、3個のCPUの間で同期化され
る。各プロセッサCPU-A、CPU-B及びCPU-Cは、それ自身
と他の2個との3個の割り込み要求に対して応答的であ
り、命令ストリームの同じ点においてこれらのCPUに割
り込み要求を示す。メモリモジュール14と15は、メモリ
参照をボートし、全3個のCPUが同じ要求(故障に対す
る準備とともに)を行ったときにのみ、メモリ参照が進
むことを許可する。このように、これらのプロセッサ
は、外部のイベント(メモリ参照)の時に同期化され、
その結果、プロセッサは、典型的には、同じ命令ストリ
ームを、同じシーケンスで、ただし必ずしも同期イベン
トの間の時間における平行した時間サイクルの間ではな
いが、実行する。さらに、外部の割り込みは、同期化さ
れて、各CPUの命令ストリームにおける同一の点で実行
される。
CPU-Aプロセッサ11は、バス21を介して、メモリ#1モ
ジュール14とメモリ#2モジュール15に接続される。同
様に、CPU−Bプロセッサ12は、バス22を介して、メモ
リ#1モジュール14とメモリ#2モジュール15に接続さ
れる。そして、CPU-Cプロセッサ13は、バス23を介し
て、メモリモジュール14、15に接続される。これらのバ
ス21、22、23は、32ビット多重アドレス/データバス、
コマンドバス、及びアドレスとデータのストローブのた
めの制御ラインを含む。これらのCPUは、これらのバス2
1、22及び23の制御を備え、そのため、アービトレーシ
ョン(arbitration)またはバス要求やバス使用承認(b
us grant)はない。
各メモリモジュール14と15は、それぞれの入出力バス24
又は25に別々に接続され、各バスは、2個(またはそれ
以上)の入出力プロセッサに接続される。このシステム
は、個々のシステム構成のために必要なI/O装置を収容
するために必要な多数のI/Oプロセッサを備えることが
できる。各入出力プロセッサ26、27は、バス28に接続さ
れる。バス28は、VMEバス(登録商標)のような標準の
構成であってもよい。そして、各バス28は、標準のI/O
コントローラ30とのインターフェースのための1個以上
のバスインターフェースモジュール(BIM)29に接続さ
れている。各バスインターフェースモジュール29は、2
個のバス28に接続され、従って、1個のI/Oプロセッサ2
6または27の故障、または1個のバスチャンネル28の故
障は、許容される。I/Oプロセッサ26と27を、CPU11、12
及び13によってメモリモジュール14と15を通してアドレ
ス指定することができ、I/Oプロセッサ26,27はメモリモ
ジュールを介して全CPUに割り込み信号を出力すること
ができる。ディスクドライブ、CRTスクリーンとキーボ
ードを備えたターミナル、及びネットワークアダプタ
は、I/Oコントローラ30により作動される典型的な周辺
装置である。I/Oコントローラ30は、データブロックの
ような転送のためにメモリモジュール14と15に対しDMA
タイプの参照をすることができる。各I/Oプロセッサ1
6、27などは、バス要求、バス使用承認等のために各メ
モリモジュールに直接に接続された個々のラインを備え
る。これらの点から点への接続ラインは、「ラジアル」
と呼ばれ、ラジアルライン31のグループに含まれる。
システムステイタスバス32は、各素子のステイタス情報
を与える目的のために、上記各CRU11、12、13、各メモ
リモジュール14、15、各I/Oプロセッサ26、27に、個々
に接続される。このステイタスバスは、システムに現在
存在し適当に動作しているCPU、メモリモジュール及びI
/Oプロセッサについての情報を提供する。
3個のCRUと2個のメモリモジュールを接続する肯定応
答/ステイタスバス33は、メモリ要求が全CRUによって
行われたときにモジュール14、15が全CRUに肯定応答信
号を送信する個々のラインを含む。同時に、ステイタス
フィールドが、コマンドのステイタスとコマンドが正し
く実行されたか否かとについて報告するために送信され
る。メモリモジュールは、グローバルメモリから読み出
されたデータまたは書き込まれたデータのパリティを検
査するだけでなく、メモリモジュールを介してI/Oバス2
4と25へまたはバス24、25からのデータのパリティを検
査し、またコマンドの正当性を検査する。これらの検査
がCPU11、12及び13に報告されるのは、バス33のステイ
タスラインを介してであり、もし誤りが発生すると、故
障ルーチンを、故障部品を分離するためにエンターする
ことができる。
2個のメモリモジュール14と15がグローバルメモリに同
じデータを格納し、すべてのメモリ参照を2重に行うよ
うに動作しているが、任意の与えられた時間では、1個
のメモリモジュールがプライマリと指定され、他方は、
バックアップと指定される。メモリライト動作は、両メ
モリモジュールにより実行されるので、両方とも使用可
能状態(current)であり、またメモリリード動作も両
方により実行される。しかし、プライマリのメモリモジ
ュールのみが、バス21、22及び23に実際にリードデータ
をロードし、そして、プライマリのメモリモジュールの
みがマルチマスタバス24と25のためのアービトレーショ
ンを制御する。プライマリのメモリモジュールとバック
アップのメモリモジュールに同じ動作の実行を続けるた
めに、バス34がプライマリからバックアップへ制御情報
を伝送する。どちらかのメモリモジュールが、ブートア
ップにおいてプライマリの役割を取り、この役割は、ソ
フトウエアの制御の下に動作の間に交換できる。当該役
割は、選択されたエラー条件が全CRUまたはシステムの
他のエラー応答性部分によって検出されるときに、交換
できる。
全CPUにおいて発生されたある割り込みは、また、メモ
リモジュール14と15によってボートされる。全CPUがそ
のような割り込み状態となったとき(及びストールされ
ないとき)、全CPUは割り込みバス35の個々のラインに
よって全メモリモジュールに割り込み要求を出力する。
そこで、3個のCPUからの3個の割り込み要求をボート
することができる。すべての割り込みがボートされたと
き、メモリモジュールは、それぞれバス35を介して3個
のCPUにボートされた割り込み要求信号を送信する。こ
の割り込みのボーティングは、また、全CPUの動作につ
いての検査のために機能する。3個のCPUは、CPU間バス
18を介してこのボートされた割り込みをCPU割り込み信
号に同期し、命令ストリームの共通の点で全プロセッサ
に割り込みを示す。この割り込み同期は、どのCPUもス
トールせずに達成される。
<CPUモジュール> 第2図を参照して、1個のプロセッサ11、12又は13がさ
らに詳細に示される。全3個のCPUモジュールは、好ま
しい実施例では、同じ構成であり、従って、CPU−Aの
みがここで説明される。価格を競争力のある範囲内に保
つために、そして、既に発展されているソフトウエアと
オペレーティングシステムへのアクセスをただちに提供
するために、好ましくは、市販のマイクロプロセッサチ
ップが使用され、多数のデバイスの中の任意の1個が選
択できる。RISC(縮小命令セット)アーキテクチャは、
後述する緩い同期を実行することにおいて利点がある。
しかし、モトローラ68030デバイスやインテル80386デバ
イス(20MHzと25MHzで使用できる)などのより通常的な
CISC(複雑な命令セット)マイクロプロセッサが使用で
きる。高速32ビットRISCマイクロプロセッサデバイス
は、3個の基本的なタイプで複数の製造者から入手でき
る。すなわち、モトローラは、部品番号88000としてデ
バイスを製造し、MIPSコンピュータ・システムズ・イン
コーポレイテッドなどは、MIPSタイプと呼ばれるチップ
セットを製造し、サン・マイクロシステムズは、いわゆ
るSPARC(答録商漂)タイプ(スケール可能なプロセッ
サアーキテクチャ)を発表している。カリフォルニア州
サンホセのサイプレス・セミコンダクタは、例えば、部
品番号CY7C601と呼ばれるマイクロプロセッサ(SPARC標
準をサポートし、33MHzのクロックを用い、20MIPSの
(1秒当たり100万命令)を与える)を製造し、富士通
は、同様にSPARC標準をサポートするCMOSRISCマイクロ
プロセッサ(部品番号S−25)を製造している。
図示された実施例におけるCPUボードすなわちモジュー
ルは、一例として使用され、マイクロプロセッサチップ
40を用いる。このチップ40は、この場合MIPSコンピュー
タ・システムズ・インコーポレイテッドにより設計され
たR2000デバイスであり、また、インテグレイテッド・
デバイス・テクノロジー・インコーポレイテッドによっ
て製造される。このR2000デバイスは、RISCアーキテク
チャを用いた32ビットプロセッサであり、例えば、16.6
7MHzのクロックで12MIPSの高性能を示す。25MHzのクロ
ックで20MIPSを示すR3000のようなこのデバイスのより
高速のバージョンを代わりに用いても良い。プロセッサ
40はまた、論理アドレスから物理アドレスへの翻訳をキ
ャッシュするためのトランスレーションルックアサイド
バッファを含むメモリ管理のために使用されるコプロセ
ッサを備える。プロセッサ40は、データバス、アドレス
バス、および制御バスを備えたローカルバスに接続され
る。別々の命令とデータのキャシュメモリ44と45が、こ
のローカルバスに接続される。これらのキャシュは、そ
れぞれ64Kバイトサイズであり、プロセッサ40の1つの
クロックサイクル内でアクセスされる。もし追加の性能
がこれらのタイプの計算のために必要ならば、数値計算
用すなわち浮動小数点コプロセッサ46が、このローカル
バスに接続される。この数値計算用プロセッサデバイス
も、MIPSコンピュータ・システムズ・インコーポレイテ
ッドから部品番号R2010として市販されている。ローカ
ルバス41、42、43は、ライトバッファ50とリードバッフ
ァ51を介して内部バス構造に接続される。このライトバ
ッファは、入手可能なデバイス(部品番号R2020)であ
り、ライト動作のためにライトバッファ50にデータとア
ドレスを格納した後に、ライトが実行されている間にス
トールサイクルを実行しなければならないことよりはむ
しろ、プロセッサ40にラン(Run)サイクルを実行し続
けさせるように機能する。
ライトバッファ50を通るパスに加え、プロセッサ40がラ
イトバッファ50をバイパスしてライト動作を実行するこ
とを可能にするためのパスが設けられる。このパスは、
ソフトウエアの選択の下で、プロセッサに同期のライト
動作を行うことを可能にする。もしライトバッファバイ
パス52がイネーブルされ(ライトバッファ50がイネーブ
ルされず)、プロセッサがライト動作を実行するなら
ば、プロセッサは、ライト動作が完了するまでストール
(一時停止)する。対照的に、ライトバッファがディス
エーブルの状態でライト動作が実行されるとき、データ
がライトバッファ50に書き込まれるので(ライトバッフ
ァが満杯でないならば)、プロセッサはストールしな
い。もしプロセッサ40がライト動作を実行するときにラ
イトバッファがイネーブルされるならば、ライトバッフ
ァ50は、バス43からの制御と同様に、バス41からの出力
データとバス42からのアドレスを捕捉する。ライトバッ
ファ50は、主メモリへのデータの通過を待機する間に最
大4個のそのようなデータ‐アドレスセットを保持でき
る。ライトバッファはプロセッサチップ40のクロック17
と同期して動作し、このため、プロセッサからバッファ
への転送は同期状態でかつプロセッサのマシンサイクル
速度で行われる。ライトバッファ50は、もし満杯であっ
てデータを収容できないならば、プロセッサに信号を送
信する。プロセッサ40によるリード動作は、フォーディ
ープ・ライトバッファ50に含まれるアドレスに対して検
査され、そこで、もしメモリ16すなわちグローバルメモ
リに書き込まれるためにライトバッファで待機している
データに対してリード動作が試みられるならば、リード
動作は、ライト動作が完了するまでストールされる。
ライトバッファ50とリードバッファ51は、データバス5
3、アドレスバス54および制御バス55を備えた内部バス
構造に接続される。ローカルメモリ16は、この内部バス
によってアクセスされ、この内部バスに接続されたバス
インターフェース56は、システムバス21(または他のCP
Uのためのバス22または23)をアクセスするために使用
される。この内部バスの別々のデータバス53とアドレス
バス54(ローカルバスのバス41と42から得られる)は、
システムバス21内の多重化アドレス/データバス57に変
換され、コマンドラインと制御ラインは、対応して、こ
の外部バス内のコマンドライン58と制御ライン59に変換
される。
バスインターフェースユニット56は、また、メモリモジ
ュール14と15から肯定応答/ステイタスライン33を受信
する。これらのライン33において、別々のステイタスラ
イン33-1または33-2は、モジュール14及び15のそれぞれ
から接続され、その結果、両メモリジュールからの応答
を、後述するように、複数のCPUとグローバルメモリの
間の転送(リードまたはライト)の発生の場合に評価で
きる。
一実施例においては、ローカルメモリ16は、約8Mバイト
のRAMからなり、プロセッサ40の約3個または4個のマ
シンサイクル内でアクセスでき、このアクセスは、この
CPUのクロック17と同期している。これに反し、モジュ
ール14と15へのメモリアクセスタイムは、ローカルメモ
リへのそれに比べて非常に長く、メモリモジュール14、
15へのこのアクセスは、非同期であり、すべてのCPUが
要求とボーティングとを行うことを待機することにより
課される同期のオーバーヘッドをこうむる。比較のた
め、I/Oプロセッサ26、27、及び29を介しての典型的な
市販のディスクメモリへのアクセスは、ミリ秒で測定さ
れ、すなわち、モジュール14と15へのアクセスよりもか
なり遅い。こうして、CPUチップ40によるメモリアクセ
スの階層構造がある。最高は、命令キャシュ44とデータ
キャシュ45であり、64Kバイトのキャシュサイズと適当
なフィルアルゴリズム(fill algorithm)を使用したと
きに多分95%のヒット率を示す。最高の次は、ローカル
メモリ16であり、再び一時的仮想メモリ管理アルゴリズ
ムを使用することにより、ローカルメモリのサイズが約
8Mバイトである場合に、キャシュミスが発生し、ローカ
ルメモリにおけるヒットが見いだされ、おそらく95%の
ヒット率が、メモリ参照に対して得られる。プロセッサ
チップの観点からの正味の結果は、メモリ参照(I/O参
照でなく)のおそらく99%以上が同期し、同じマシンサ
イクルまたは3個または4個のマシンサイクル内に起こ
ることである。
ローカルメモリ16は、メモリコントローラ60によって内
部バスからアクセスされる。このメモリコントローラ60
は、アドレスバス54からのアドレスと制御バス55からの
アドレスストローブを受信し、例えば、もしローカルメ
モリ16が通常のように多重アドレス指定でDRAMを使用す
るならば、別々の行と列のアドレスと、RASとCASの制御
を発生する。データは、データバス53を介してローカル
メモリに書き込まれ、読み出される。さらに、オペレー
ティングシステムによって使用可能なので、NVRAMや高
速PROMのような不揮発性メモリ62と同様に、数個のロー
カルレジスタ61が、内部バスによってアクセスされる。
メモリのこの部分のいくつかが電源投入のためにのみ使
用され、いくつかがオペレーティングシステムによって
使用され、キャシュ44内でほとんど連続的であり、他
は、メモリマップのキャシュでない部分内に有り得る。
外部割り込みは、第2図のCPUモジュールの割り込み回
路5から制御バス43または55でピンの中の1本によって
プロセッサ40に印加される。このタイプの割り込みは、
回路65でボートされるので、割り込みがプロセッサ40に
よって実行される前に、全3個のCPUが割り込みを示さ
れるか否かが決定される。この目的のために、回路65
は、他の2個のCPU12と13から割り込み未決定(pendin
g)入力を受信し、この他の2個のCPUにライン67を介し
て割り込み未決定信号を送信する。これらのラインは、
3個のCPU11、12及び13をともに接続するバス18の一部
である。また、他のタイプの割り込み例えばCPUにより
発生された割り込みをボートするために、回路65は、こ
のCPUから両メモリモジュール14、15へバス35のライン6
8により割り込み要求信号を送信することができ、そし
て、ライン69と70を介してメモリモジュールから別々の
ボートされた割り込み信号を受信する。両メモリモジュ
ールは、行われるべき外部割り込みを与える。1個のI/
Oチャンネル28でのキーボードまたはディスクドライブ
のような外部ソースにて発生された割り込みは、例え
ば、各CPU11、12又は13が、後述されるように、命令ス
トリーム内の同じ点にあるまで、回路65からチップ40の
割り込みピンに印加されない。
プロセッサ40は別々のクロック発生器17によってクロッ
クが供給されるので、周期的にプロセッサ40を同期状態
に戻すためのいくつかのメカニズムが必要である。クロ
ック発生器17が名目上同じ周波数でありこれらのデバイ
スの許容誤差が約25ppm(parts per million)であった
としても、これらのプロセッサは、周期的に同期に戻さ
れないならば、位相が多くのサイクルでずれてしまう可
能性がある。もちろん、外部割り込みが発生する毎に、
全CPUは、(割り込み同期メカニズムによって)その命
令ストリームの同じ点で割り込まれるという意味で、同
期化される。しかし、これは、サイクル計数値を同期化
させることを援助しない。メモリモジュール14と15内の
メモリ参照をボートするメカニズムは、後述されるよう
に全CPUをリアルタイムで同期状態にする。しかし、あ
る条件は、長い周期においてメモリ参照が起こらないと
いう結果を生じ、そこで、別のメカニズムが、プロセッ
サ40を同期に戻すためのストールサイクルを導入するた
めに使用される。サイクルカウンタ71は、ランサイクル
(ストールサイクルでなく)であるマシンサイクルを計
数するために、クロック17とプロセッサ40の制御ピンに
制御バス43を介して接続される。このカウンタ71は、全
CPUの間の最大の許容可能なドリフトが発生する周期
(結晶発振子の特定の許容誤差を考慮して)を表すよう
に選択された最大計数値を有するカウントレジスタを含
む。このカウントレジスタがオーバーフローすると、よ
り遅いプロセッサが追い付くまで、より速いプロセッサ
をストールする動作が開始される。このカウンタ71は、
メモリモジュール14と15へのメモリ参照によって同期が
なされるときはいつでもリセットされる。また、リフレ
ッシュカウンタ72は、後述されるように、ローカルメモ
リ16でリフレッシュサイクルを実行するために使用され
る。さらに、カウンタ73は、カウンタ71のように、ラン
サイクルであってストールサイクルでないマシンサイク
ルを計数する。しかし、このカウンタ73は、メモリ参照
によってリセットされない。カウンタ73は、以下に説明
されるように、割り込み同期のために使用され、この目
的のために、割り込み同期回路65に出力信号CC−4とCC
−8を発生する。
プロセッサ40は、RISC命令セットを備え、このセット
は、メモリからメモリへの命令をサポートしないが、そ
の代わり、メモリからレジスタへの命令またはレジスタ
からメモリへの命令(たとえばロードまたはストア)を
サポートする。ローカルメモリにしばしば使用されるデ
ータや現在実行中のコードを保持することは重要であ
る。従って、ブロック転送動作は、バスインターフェー
ス56に結合されたDMAステートマシン74によりなされ
る。プロセッサ40は、コマンドとして機能させるために
DMA回路74のレジスタに1ワードを書き込み、この回路7
4のレジスタにブロックのスタートアドレスと長さを書
き込む。一実施例では、DMA回路がブロック転送を引き
継ぎ実行する間に、マイクロプロセッサはストールをし
て、バス53−55及び21によって必要なアドレス、コマン
ド及びストローブを発生する。このブロック転送を開始
するためにプロセッサ40によって実行されるコマンド
は、DMA回路74のレジスタからのリードであってもよ
い。UNIXオペレーティングシステムにおけるメモリ管理
はデマンドページングを当てにしているので、これらの
ブロック転送は、最もしばしばグローバルメモリとロー
カルメモリとI/Oトラフィックの間に動かされるページ
である。1ページは4Kバイトである。もちろん、バス2
1、22及び23は、CPUとグローバルメモリの間の1ワード
のリード転送とライト転送をサポートする。参照される
ブロック転送は、ローカルメモリとグローバルのメモリ
の間でのみ可能である。
<プロセッサ> 第3図を参照して、実施例のR2000タイプまたはR3000タ
イプのプロセッサ40がさらに詳細に示される。このデバ
イスは、32個の32ビットの一般目的のレジスタ76、32ビ
ットのALU77,0ビットから64ビットへのシフタ78、およ
び32×32の多重/分割回路79を備える32ビットのメイン
CPU75を備える。このCPUは、また、プロセッサバス構造
81に接続され、このプロセッサバス構造81は、ローカル
データバス41に接続され、データバス41を介してフェッ
チされる命令を実行するための関連する制御ロジックを
備えた命令デコーダ82に接続される。32ビットのローカ
ルアドレスバス42は、オンチップメモリ管理コプロセッ
サ内のトランスレーションルックアサイドバッファ(TL
B)83を含む仮想メモリ管理装置によって駆動される。T
LN83は、仮想アドレスバス84を介してマイクロプロセッ
サブロック75から受け取られた仮想アドレスと比較され
るべき64個のエントリを備える。バス42の下位の16ビッ
トの部分85は、この仮想アドレスバス84の下位部分によ
って駆動され、上位部分は、もし仮想アドレスが物理的
アドレスとして使用されるならば、バス84からであり、
あるいは、もし仮想アドレス指定が使用され、ヒットが
起こるならば、出力86を介してのTLB83からのタグエン
トリである。ローカルバスの制御ライン43は、パイプラ
イン及びバス制御回路87に接続され、内部バス構造81と
制御ロジック82から駆動される。
プロセッサ40のマイクロプロセッサブロック75は、RISC
タイプであり、多くの命令が1マシンサイクルで実行さ
れ、命令セットは、ALU動作に伴うメモリ参照を含む複
雑な命令を含むよりはむしろ、レジスタからレジスタへ
の命令やロード/ストア命令を使用する。複雑なアドレ
ス指定スキーム(例えば、レジスタA1とレジスタA2の内
容の和であるアドレスのオペランドを、レジスタBの内
容によりアドレスされる主メモリの位置に見いだされる
アドレスのオペランドに加え、レジスタCに見いだされ
るアドレスの位置に主メモリにその和の結果をストアせ
よ。)は、命令セットの一部として含まれない。その代
わり、この動作は、次の多数の単純なレジスタからレジ
スタへの命令やロード/ストア命令にてなされる。すな
わち、レジスタA2をレジスタA1に加算せよ、レジスタB
内のアドレスのメモリ位置からレジスタB1をロードせ
よ、レジスタA1とレジスタB1を加算せよ、レジスタCに
よりアドレスされたメモリ位置にレジスタB1をストアせ
よ。
コンパイラ技法は、32個のレジスタ76の使用を最大にす
るために使用され、すなわち、大部分の動作が既にレジ
スタセットにあるオペランドを見いだすことを保証す
る。ロード命令は、実際に、1マシンサイクルより長く
かかる。このため1命令の潜在(latency)が導入され
る。ロード命令によってフェッチされるデータは、第2
サイクルまで使用されず、もし可能ならば、その間に入
るサイクルが、ある他の命令のために使用される。
メインCPU75は、マシンサイクル当たりの命令実行を平
均化する目的を容易にするために高度にパイプライン化
されている。第4図を参照して、1つの命令が5マシン
サイクルを含む周期にわたって実行される。ここで、1
マシンサイクルは、16.67MHzのクロック17に対して1ク
ロック周期すなわち60nsecである。この5サイクルすな
わちパイプステージは、IF(Iキャシュ44からの命令フ
ェッチ)、RD(レジスタセット76からのリードオペラン
ド)、ALU(ALU77での要求される命令を実行)、MEM
(もし要求されたならDキャシュ45をアクセスせよ)、
及びWB(ALUの結果をレジスタファイル76に書け)とし
て呼ばれる。第5図かなわかるように、これらの5個の
パイプステージは、重なっているので、与えられたマシ
ンサイクル、例えばサイクル5において、命令1#5
は、その第1パイプステージすなわちIFパイプステージ
にあり、命令I#1は、その最後のステージすなわちWB
ステージにあり、その他の命令は、その間に入るパイプ
ステージにある。
<メモリモジュール> 第6図を参照して、1個のメモリモジュール14または15
が詳細に示される。両メモリモジュールは、好ましい実
施例において、同じ構成であるので、メモリ#1モジュ
ールのみが示される。メモリモジュールは、それぞれ、
CPU11、12、13から来る3個のバス21、22、23に接続さ
れる3個の入力/出力ポート91、92、93を含む。これら
のポートへの入力は、レジスタ94、95、96にラッチさ
れ、各ラッチは、データ、アドレス、コマンド、及びラ
イト動作のためのストローブ、または、アドレス、コマ
ンド、及びリード動作のためのストローブをストアする
ための別々のセクションを備える。これらの3個のレジ
スタの内容は、全3個のレジスタのみがすべてのセクシ
ョンに接続される入力を備えたボート回路100によって
ボートされる。もし全3個のCPU11、12、13が同じメモ
リ要求(同じアドレス、同じコマンド)を行うならば
(全CPUは典型的には同じ命令ストリームを実行するの
でそのような場合がありうる)、メモリ要求は完了する
ことを許容される。しかし、第1メモリ要求が、3個の
ラッチ94、95、96のいずれかにラッチされると直ちにメ
モリアクセスを開始するために通過される。この目的の
ために、アクセス、データ及びコマンドは、データバス
101、アドレスバス102およびコマンドバス103を含む内
部バスに印加される。この内部バスから、メモリ要求
は、アドレスに依存して、そしてシステム構成に依存し
て様々なリソースにアクセスする。
一実施例において、大きなDRAM104が、メモリコントロ
ーラ105を用いて、内部バスによってアクセスされる。
このメモリコントローラ105は、アクセスバス102からア
ドレスと制御バス103からメモリ要求とストローブとを
受信し、データ入力とデータ出力がデータバス101に出
力されるようにDRAMのための多重の行と列のアドレスを
発生する。このDRAM104はまた、グローバルメモリと呼
ばれ、一実施例においては多分32Mバイトのサイズであ
る。さらに、内部バス101−103は、制御・ステイタスレ
ジスタ106、多数の不揮発性RAM107及びライトプロテク
ト108をアクセスできる。CPUによるメモリ参照は、ま
た、メモリモジュール14または15内のメモリをバイパス
でき、内部バス101−103に接続される入力を備えたバス
インターフェースによってI/Oバス24、25にアクセスで
きる。もしメモリモジュールがプライマリメモリモジュ
ールであるならば、各メモリモジュール内のバスアービ
トレータ110は、バスインターフェース109を制御する。
もしメモリモジュールがバックアップモジュールである
ならば、バス34はバスインターフェース109を制御す
る。
DRAM104へのメモリアクセスは、第1の要求が1個のラ
ッチ94、95、又は96にラッチされると直ちに開始される
が、故障に備えて、多数の要求が同じであることをボー
ト回路100が決定されなければ、完了を許容されない。
3個の要求の中の第1の要求の到達は、DRAM104へのア
クセスを開始させる。リードに対して、DRAM104がアド
レス指定され、センスアンプがストローブされ、データ
出力がDRAM入力で生じる。そして、もし第3の要求が受
信された後でボートが良いならば、要求されたデータは
CPUに直ちに転送するために用意される。このように、
ボーティングの動作はDRAMアクセス動作と重なる。
第7図を参照して、バス21、22、23は、図示されたフォ
ーマットにてメモリモジュール14、15のポート91、92、
93にメモリ要求を与える。これらのバスの各々は、32本
の双方向多重アドレス/データライン、13本の1方向コ
マンドライン及び2本のストローブからなる。コマンド
ラインは、リード、ライト、ブロック転送、単独転送、
I/OリードまたはI/Oライトなどのバスアクティビティの
タイプを特定するフィールドを含む。また、1フィール
ドは、4バイトに対するバイトイネーブルとして機能す
る。上記のストローブは、AS(アドレスストローブ)と
DS(データストローブ)である。CPU11、12、13は、そ
れぞれ、自分自身のバス21、22又は23を制御する。この
実施例において、これらは、マルチマスタバスではな
く、争いすなわちアービトレーションはない。ライトに
対して、CPUは、アドレスストローブAS(アクティブで
ローレベル)で1サイクル内でバスにアドレスとコマン
ドを送り、続くサイクル(おそらく次のサイクル、しか
し必ずしもそうでなくてもよい)でデータストローブと
同時にバスのアドレス/データラインにデータを送信す
る。各CPUからのアドレスストローブASは、ストローブ
が現れたとき、ポート91、92又は93にアドレスとコマン
ドを生じさせて、レジスタ94、95、96のアドレス・コマ
ンドセクションにラッチさせ、次に、データストローブ
DSがデータをラッチさせる。バス21、22、23の多数(こ
の実施例では3の中の2)が同じメモリ要求をラッチ9
4、95、96に送信するとき、ボート回路100は、バス103
に最後のコマンドを通過させ、メモリアクセスが実行さ
れる。もしコマンドがライトならば、ライトが実行され
ると直ちに、肯定応答ACK信号がライン112(特にメモリ
#1のライン112−1とメモリ#2のライン112−2)に
よって各CPUに送り返され、同時にステイタスビット
が、第7図の時間T3に各CPUに肯定応答/ステイタスバ
ス33(特にメモリ#1のライン33−1とメモリ#2のラ
イン33−2)を介して送信される。最後のストローブDS
(もしリードならばAS)とT3でのACKの間の遅延T4は、
メモリ要求のときにCPUが何サイクル同期位置からずれ
ているかに依存して、また、ボーティング回路における
遅延とCPUクロック17に比べてメモリモジュール14又は1
5の内部の独立なクロック17の位相に依存して、変わり
得る。もしCPUにより出力されるメモリ要求がリードで
あると、次に、ライン112−1と112−2のACK信号とラ
イン33−1と33−2のスチイタスビットが、時間T3の間
に、データがアドレス/データバスに出されるのと同時
に送信される。これは、CPUにストールをリリースし、
こうして同一の命令に対してCPUチップ40を同期させ
る。すなわち、最速のCPUは、より遅いCPUが追い付くの
を待っているので、より多くのストールサイクル(stal
l cycle)を実行し、こうして、クロック17がたぶん位
相がずれているが、全3個が同時にリリースされる。全
3個のCPUがストールから出て来たとき、これらのCPUに
よって最初に実行される命令は同じである。
メモリモジュール14又は15からCPU11、12、13に送信さ
れるすべてのデータは、そのデータがDRAM104から又は
メモリ位置106−108からのリードデータであるか、バス
24、25からのI/Oデータであるかに拘わらず、レジスタ1
14を通過する。このレジスタ114は、内部データバス101
からロードされ、このレジスタからの出力は、時間T3に
ポート91、92、93でバス21、22、23のためのアドレス/
データラインに印加される。パリティは、データがこの
レジスタにロードされたときに検査される。DRAM104に
書き込まれたすべてのデータと、I/Oバスのすべてのデ
ータは、それに関連したパリティビットを持つ。しか
し、パリティビットは、バス21、22、23でCPUモジュー
ルに転送されない。リードレジスタ114で検出されたパ
リティエラーは、ステイタスバス33−1、33−2を介し
てCPUによって報告される。プライマリとして指定され
たメモリモジュール14又15のみが、そのレジスタ114内
のデータをバス21、22、23に出力する。バックアップ又
はセカンダリとして指定されたメモリモジュールは、レ
ジスタ114をロードする点まで連続して行われるリード
動作とパリティチェックを完了し、バックアップ33−1
と33−2にステイタスを報告する。しかし、データは、
バス21、22、23に出力されない。
各メモリモジュール14又は15内のコントローラ117は、
このモジュールのためのクロック発振器17によりステー
トマシーンとして動作し、バス103とバス21−23から様
々なコマンドラインからのデータ(例えばレジスタとバ
スをロードするための制御ビットの発生、外部制御信号
の発生など)を受信する。現在プライマリとして指定さ
れているモジュール14又は15内のこのコントローラ117
は、共通のバス101−103へのアクセスのためにI/O側
(インターフェース)とCPU側ポート91−93)の間でア
ービトレータ110を介してアービトレートする。プライ
マリメモリモジュール14又は15のコントローラ117によ
るこの決定は、ライン34によって他のメモリモジュール
のコントローラ117に伝送されて、他のメモリモジュー
ルに同じアクセスを実行させる。
各メモリモジュール内のコントローラ117はまたこのモ
ジュールのためのクロック発振器17からパルスを受信す
るリフレッシュカウンタ118に基づいて、DRAM104にリフ
レッシュサイクルを導入する。DRAMは8ミリ秒毎に512
リフレッシュサイクルを受信しなければならず、従って
平均して約15ミリ秒毎にリフレッシュサイクルが導入さ
れる。こうして、カウンタ118は、15ミリ秒毎にコント
ローラ117にオーバーフロー信号を発生する。そして、
もしアイドル条件(CPUアクセスまたはI/Oアクセスが実
行さない)が存在するならば、リフレッシュサイクルが
バス103に出力されたコマンドによって実施される。も
し動作が進行中ならば、現在の動作が完了したときに、
リフレッシュが実行される。メモリのページングに使用
さるブロック転送のような長い動作のために、数個のリ
フレッシュサイクルがバックアップでき、転送が完了し
た後でバーストモードで実行される。この目的のため
に、最後のリフレッシュサイクルがカウンタ118に関連
したレジスタに格納されるので、カウンタ118のオーバ
ーフローの数が用いられる。
CPUによって発生された割り込み要求は、割り込みバス3
5のライン68によって個々に各CPU11、12、13から受信さ
れる。これらの割り込み要求は、各メモリモジュール1
4、15に送信される。バス35のこれらの要求ライン68
は、割り込みボート回路119に接続されて、この回路119
はこれらの要求を比較し、バス35の出力ライン69にボー
トされた割り込み信号を出力する。CPUはそれぞれ、バ
ス35を介して2本のライン(各モジュール14、15から1
本)にボートされた割り込み信号を受信する。各メモリ
モジュール14、15からのボートされた割り込み信号に対
して論理和の演算が行われ、その演算結果が割り込み同
期回路65に出力される。ソフトウエアの制御の下に、CP
UはどのCPUが割り込みをするかを決定する。I/Oプロセ
ッサ又はI/Oコントローラで発生される外部割り込みは
また、バス35のライン69、70を介してメモリモジュール
14、15を介してCPUに信号として送信される。同様に、C
PUはただプライマリモジュール14又は15からの割り込み
に応答する。
<I/Oプロセッサ> 第8図において、1個のI/Oプロセッサ26又は27が詳細
に示される。I/Oプロセッサは2個の同じポート(I/Oバ
ス24への1個のポート121とI/Oバス25への他のポート12
2)を備える。各I/Oバス24,25は、32ビット双方向多重
アドレス/データバス123(32ビットの外に4ビットの
パリティを含む)、リード、ライト、ブロックリード、
ブロックライトなどの実行される動作のタイプを定義す
る双方向コマンドバス124、内部からI/Oプロセッサへの
又はバス28のどのロケーションにアドレス指定するかを
示すアドレスライン、バイトマスク、及び最後に、アド
レスストローブ、データストローブ、アドレス肯定応答
及びデータ肯定応答を含む制御ラインから構成される。
バス31のラジアルラインは、各I/Oプロセッサから各メ
モリモジュールへの個々のラインを含む。すなわち、I/
Oプロセッサからメモリモジュールへのバス要求、メモ
リモジュールからI/Oプロセッサへのバスグラント、I/O
プロセッサからメモリモジュールへの割り込み要求ライ
ン、及びメモリモジュールからI/Oプロセッサへのリセ
ットラインである。どのメモリモジュールがプライマリ
であるかを示すラインは、システムステイタスバス32を
介して各I/Oプロセッサに接続される。第8図のI/Oプロ
セッサのコントローラすなわちステートマシーン126
は、コマンドライン、制御ライン、ステイタスライン、
ラジアルラインからのデータ、内部データ、及びバス28
からのコマンドラインからのデータを受信し、さらに、
バス24,25の内容を受信し情報をバスに伝送するために
保持するラッチ127,128の動作を含むI/Oプロセッサの内
部動作を定義する。
メモリモジュールからI/Oプロセッサへのバス24、25で
の転送は、別々に肯定応答されたアドレスとデータを用
いて第9図に示されるプロトコルを使用する。プライマ
リと指定されたメモリモジュール内のアービトレータ回
路110は、I/Oバス24、25の所有権(ownership)のため
のアービトレーションを行う。CPUからI/Oへの転送が必
要なとき、CPU要求がメモリモジュールのアービトレー
ション論理回路110に出力される。アービトレーション
論理回路110がこの要求を承認したとき、メモリモジュ
ールは、アドレスとコマンドを(両バス24,25の)バス1
23、124に、アドレスストローブが(2つのバス24と25
の)第9図の時間T1に主張されたときと同時に、バス12
5に印加する。コントローラ126がアドレスをラッチ127
又は128にラッチさせたとき、アドレス肯定応答がバス1
25に主張され、次に、メモリモジュールは時間T2にデー
タを(両バス24、25を介して)バス123に出力し、ライ
ン125にデータストローブを出力する。時間T2の後で、
コントローラは、2個のラッチ127、128にデータをラッ
チさせ、データ肯定応答信号がライン125に出力され、
そうして、データ肯定応答の受信の際に、両メモリモジ
ュールは、アドレスストローブ信号の主張をやめること
によりバス24、25をリリースする。
I/Oプロセッサからメモリモジュールへの転送におい
て、I/OプロセッサがI/Oバスを使う必要があるとき、I/
Oプロセッサは、両バス24、25に、ラジアルバス31にラ
インによってバス要求を主張し、次に、プライマリメモ
リモジュール14又は15にアービトレータ回路110からバ
ス使用承認信号を待つ。バス使用承認ラインもラジアル
ラインの1本である。バス使用承認が主張されたとき、
コントローラ126は、前の転送が完了されたことを(誤
って)意味する、バス125上でアドレスストローブとア
ドレス肯定応答信号の主張が解除されるまで待機する。
そのとき、コントローラ126は、ラッチ127、128からラ
イン123へアドレスを出力させ、コマンドをライン124に
出力させ、アドレスストローブを両バス24、25のバス12
5に出力させる。アドレス肯定応答が両バス24、25から
受信されたとき、データがアドレス/データバスにデー
タストローブとともに出力され、転送は、メモリモジュ
ールからI/Oプロセッサへのデータ肯定応答信号で完了
される。
ラッチ127と128は、アドレスバス129a,データバス129b,
及び制御バス129cを含む内部バス129に接続される。内
部バス129は、バス32によって供給されるステイタスを
保持するなどのために、コントローラステートマシーン
126によって実行されるコマンドをセットアップするた
めに用いられる内部ステイタス・制御レジスタ130をア
ドレス指定することができる。これらのレジスタ130
は、CPUのアドレス空間においてCPUからリードまたはラ
イトのためにアドレス指定可能である。バスインターフ
ェース131は、コントローラ131の制御の下に、VMEバス2
8と通信する。バス28は、アドレスバス28a,データバス2
8b,制御バス28c及びラジアル28dを備え、これらの全ラ
インは、バスインターフェースモジュール29を介してI/
Oコントローラ30に接続される。バスインターフェース
モジュール29は、一方又は他方の又は両方のI/Oプロセ
ッサからの、1セットだけのバスライン28をコントロー
ラ30に駆動させるためのマルチプレクサ132を備える。
コントローラ30の内部で、コマンド、制御、ステイタ
ス、データのレジスタ133があり、(このタイプの周辺
コントローラにおいて標準的プラクティスとして)CPU1
1、12、13から、開始するべきリードとライトのために
アドレス指定可能であり、I/O装置における動作を制御
する。
VMEバス28上での各I/Oコントローラ30は、BIM29のマル
チプレクサ132を介して両I/Oプロセッサ26、27との接続
機能を備え、いずれか1個によって制御されるが、CPU
によって実行さるプログラムによって一方または他方に
限られる。特定のアドレス(又1組のアドレス)は、各
コントローラ30を示す制御・データ転送レジスタ133の
ために確定され、これらのアドレスは、オペレーティン
グシステムによりI/Oページテーブル(通常は、ローカ
ルメモリの核データ区分)に維持される。これらのアド
レスは、両方ではなく、どちらかのI/Oプロセッサ#1
または#2を介してのみアドレス指定が可能であるよう
に、各コントローラ30を関連づける。すなわち、I/Oプ
ロセッサ27と比較すると、ある異なったアドレスは、I/
Oプロセッサ26を介して特定のレジスタ133に到達させる
ために使用される。バスインターフェース131(及びコ
ントローラ126)は、マルチプレクサ132を切り換えて一
方または他方からバス28上のデータを受信する。これ
は、CPUからI/Oプロセッサのレジスタ130へのライトに
よってなされる。こうして、デバイスドライバがこのコ
ントローラ30をアクセスするためにコールされたとき、
オペレーティングシステムはページテーブルにおけるア
ドレスをそのために使用する。プロセッサ40は、ライト
バッファ50を介してよりもむしろ、バイパスバッファパ
ス52を用いてこれらのコントローラの制御・データ転送
レジスタ133へのI/Oライトによってコントローラ30をア
クセスする。従って、これらは、これは、回路100によ
ってボートされ、メモリモジュールを通してバス24又は
25へ、従って選択されたアドレス28への同期化されたラ
イト動作である。プロセッサ40は、このライト動作が完
了するまでストールする。第8図のI/Oプロセッサボー
ドは、ある誤り(例えば不適当なコマンド、VMEバス28
で応答が受信しないまま期限がすぎたこと、実行された
ときのパリティチェック)を検出するように形成され、
1個の誤りが検出されると、I/Oプロセッサは、バスト
ラフィックへの応答を止め、すなわち、第9図に関連し
て上述されたアドレス肯定応答とデータ肯定応答を送信
することを中止する。これは、バスインターフェース56
によってバスフォールトとして検出され、後述されるよ
うに割り込みを生じ、可能ならば自己訂正作用がなされ
る。
<エラーリカバリ> 上記バス21、22、23を介して転送のためのメモリモジュ
ール14と15による応答を評価するために、CPU11、12、1
3によって用いられるシーケンスは、次に説明される。
このシーケンスは、バスインターフェースユニット56に
おけるステートマシンによって定義されかつCPUによっ
て実行されるコードにおいて定義される。
第1の場合、リード転送において、データの誤りがプラ
イマリのメモリからのライン33にステイタスビットに示
されないと仮定する。ここで、メモリ参照によって始め
られるストールは、各マイクロプロセッサ40で命令実行
を続けることを可能にするために、制御バス55と43を介
してレディ信号を主張することにより終了する。しか
し、肯定応答がライン112において他の(プライマリで
ない)メモリモジュールから受信されるまで(または時
間切れになるまで)、開始されない。もしいずれかのス
テイタスフィールド(ライン33−1または33−2)にお
いてエラーが検出されたなら、又はもしプライマリでな
いメモリが時間切れになったならば、割り込みはポスト
(post)される。
第2の場合、リード転送において、データエラーがプラ
イマメモリからステイタスライン33に指示されたこと、
あるいは、プライマリメモリから応答が受信されなかっ
たことが仮定される。CPUは、他方のメモリから肯定応
答を待ち、もし他のメモリからのステイタスビットにデ
ータエラーが見いだされないならば、バスインターフェ
ース56の回路が所有権(プライマリのメモリステイタ
ス)の変化を起こさせ、従って、データが新しいプライ
マリから正しくリードされたか否かを確認するために、
リトライが設定される。もし良好なステイタスが新しい
プライマリから受信されたなら、次にストールは前のよ
うに終了して、割り込みはシステムを更新するために
(1個のメモリを悪いと気付き、異なったメモリをプラ
イマリとし)ポストされる。しかしながら、もしデータ
エラー又は時間切れが新しいプライマリからリードをす
るという試みから生じたなら、次に割り込みが制御バス
55と43を介してプロセッサ40に主張される。
ライトバッファ50がバイパスされたライト転送におい
て、第1の場合では、どちらのメモリからもステイタス
ビットにエラーが示されない。ストールは終了され命令
の続行が許可される。再び、もしエラーがどちらかのス
テイタスフィールドに検出されたならば割り込みがポス
トされる。
ライトバッファ50がバイパスされたライン転送におい
て、第2の場合では、データエラーがプライマリメモリ
からステイタスに指示されるか、または、応答が、プラ
イマリメモリから受け取られない。各CPUのインターフ
ェースコントローラは、他のメモリモジュールからの肯
定応答を待つ。そして、もしデータエラーが他のメモリ
からのステータスに見いだされないならば、所有権の変
化が強制され、割り込みがポストされる。しかし、もし
データエラー又は時間切れが他方の(新しいプライマリ
の)メモリモジュールのために起こるならば、次に割り
込みがプロセッサ40に対して主張される。
ライトバッファ50がイネーブルされたライト転送におい
て、CPUチップはライト動作によってストールされず、
第1の場合は、どちらのメモリモジュールからもステイ
タスにエラーが指示されない。転送は終えられて、他の
バス転送が開始される。
ライトバッファ50をイネーブルとしたライト転送におい
て、第2の場合、データエラーは主メモリからのステイ
タスに示されるか、又は、応答が主メモリから受信され
ない。メカニズムは、他のメモリからの肯定応答を待
つ。そして、もし他のメモリからのステイタスにデータ
エラーが見い出されないならば、次に所有権の変化が強
行され、割り込みはポストされる。しかし、もしデータ
エラー又は時間切れが他のメモリにおいて生じるなら
ば、次に割り込みがポストされる。
メモリモジュール14又は15は、いま説明したメカニズム
によって一旦決定されると、フォールト条件がオペレー
タに対し信号として示されるが、システムは動作を続け
ることができる。オペレータは、おそらく故障のモジュ
ールを含むメモリボードを交換することを希望するだろ
う。これは、システムが起動され動作している間に行う
ことができる。次に、システムは、停止せずに新しいメ
モリボードを再統合できる。このメカニズムは、ソフト
のエラーによってライトを実行できないがテストで良好
なとされ物理的に交換する必要がないメモリモジュール
を再するためにも役立つ。タスクは、データが他方のメ
モリモジュールと同じである状態にそのメモリモジュー
ルを戻すことである。この再生モードは、2ステップの
プロセスである。まず、メモリがイニシャライズされて
おらず、パリティエラーを含むかも知れないことを仮定
する。そこで良好なパリティの良好なデータが、すべて
のロケーションに書き込まなければならない。これは、
この点ですべてゼロである。しかし、すべてのライト動
作が2個のメモリで実行されるので、この第1ステップ
が達成される方法は、良好なメモリモジュールのロケー
ションをリードし、次にこのデータを両メモリモジュー
ル14と15の同じロケーションにライトすることである。
これは、通常の動作が進行中に、実行中のタスクに挿入
されて行われる。I/Oバス24又は25から生じるライト
は、第1ステップでのこの再生ルーチンにおいて無視さ
れる。こうしてすべてのロケーションにライトされた後
は、次のステップは、I/Oアクセスもまたライトされる
ことを除いて第1ステップと同じである。すなわち、I/
Oバス24又は25からのI/Oライトは、実行するタスクにお
いて通常のトラフィックにおいて発生するときに、良好
なメモリのすべてのロケーションをリードしこの同じデ
ータを両メモリモジュールの同じロケーションにライト
することを挿入して実行される。この第2ステップでモ
ジュールがゼロから最大アドレスまでアドレス指定され
たときに、両メモリは同一になる。この第2の再生ステ
ップの間に、CPUとI/Oプロセッサの両方が、エラーなし
に全ての動作を行うようにメモリモジュールが再生され
ることを期待する。I/Oプロセッサ26、27は、データリ
ード転送の間に再生されるメモリモジュールによって示
されるデータを使用しない。再生プロセスが完了した後
で、再生されたメモリは、(必要ならば)プライマリと
指定できる。
同様な再プロセスがCPUモジュールに対しても備えられ
る。1個のCPUが(メモリボート回路100による場合等の
ように)故障と検出されるとき、他の2個のCPUは動作
を続けるが、悪いCPUボードは、システムを停止せずに
交換できる。新しいCPUボードがオンボードROM63から起
動自己テストルーチンを実行するとき、他のCPUにこの
ことを示す信号を出力して、再生ルーチンが実行され
る。まず、2個の良好なCPUがその状態をグローバルメ
モリにコピーし、次に全3個のCPUが「ソフトリセッ
ト」を実行する。ここで、CPUはROM内のイニシャライズ
ルーチンから実行をリセットし開始する。そうして、全
CPUは、命令ストリームの正確に同じ点に来て、同期化
され、次に、保存されていた状態が全3個のCPUにコピ
ーして戻され、前に実行されていたタスクが続行され
る。
上述したように、各メモリモジュール内のボート回路10
0は、全3個のCPUが同一のメモリ参照をしているか否か
を決定する。もしそうならば、メモリ動作は、完了まで
進むことを許可される。もしそうでなければ、CPU故障
モードに入る。ボート回路100によって検出されるよう
に、異なったメモリ参照を送信するCPUは、バス33-1及
び/又は33-2で戻されるステイタスで同定される。割り
込みはポストされ、ソフトウエアは引き続いて故障CPU
をオフラインとする。このオフラインステイタスは、ス
テイタスバス32に反映される。故障が検出されているメ
モリ参照は、3つから2つを選択するボートに基づき完
了することを許可される。つぎに、悪いCPUボードが交
換されるまで、ボート回路100は、メモリ参照の進行を
許可する前に、2個の良好なCPUからの2個の同一のメ
モリ要求を必要とする。システムは、通常は、1個の
(2個でなく)CPUオフラインで動作を続けるように構
成されている。しかし、1個の良好なCPUだけで動作す
ることが希望されるならば、別の方法が利用できる。CP
Uは、もし異なったデータがメモリ要求で検出されるな
らばボート回路100によって、又は時間切れによって、
故障とボートされる。もし2個のCPUが同一のメモリ要
求を送信するが、第3のCPUがあらかじめ選択された時
間切れ期間にどんな信号も送信しないならば、CPUは故
障と仮定され、前のようにオフラインとされる。
システムのI/O装置は故障の場合にソフトウエア再統合
のためのメカニズムを備える。すなわち、CPUとメモリ
モジュールコアは、いま説明したように、故障に対して
保護されたハードウエアである。しかし、システムのI/
O部分は故障に対して保護されたソフトウエアである。
1個のI/Oプロセッサ26または27が誤ると、上述したよ
うにソフトウエアによってI/Oプロセッサに限定された
コントローラ30は、ソフトウエアによって他方のI/Oプ
ロセッサへスイッチされる。オペレーティングシステム
は、同じコントローラに対する新しいアドレスを用いて
I/Oページテーブルのアドレスを書き直し、その後は、
コントローラは他方のI/Oコントローラ26又は27に限定
される。エラーすなわち故障は、バスインターフェース
56でバスサイクルを終えるバスエラーによって検出で
き、例外の原因を決定する例外処理ルーチンを通して核
内に急送される例外を発生し、次に、I/Oテーブルのア
ドレスを書き換えることにより)全コントローラ30を、
誤ったI/Oプロセッサ26又は27から他方へ動かす。
バスインターフェース56はいま説明したようにバスエラ
ーを検出すると、故障は、再統合スキームが使用される
前に分離されねばならない。1個のI/Oプロセッサ26ま
たは27へ、あるいは1個のバス28の1個のI/Oコントロ
ーラ30へ(すなわち1個のI/O素子における1個の制御
レジスタ又はステイタスレジスタ、又はデータレジスタ
へ)のいずれかにCPUがライト動作を行うとき、これ
は、メモリモジュールにおけるバイパス動作であり、両
メモリモジュールは動作を実行して、2個のI/Oバス24
と25にそれを通過させる。2個のI/Oプロセッサ26と27
は、ともにバス24と25をモニタし、パリティをチェック
し、コントローラ126を介して適正なシンタックスでコ
マンドをチチェックする。例えば、もしCPUがI/Oプロセ
ッサ26または27内のレジスタにライトを実行するなら
ば、もしどちらかのメモリモジュールが正当なアドレ
ス、正当なコマンド及び正当なデータを示すならば(パ
リティエラーがないことと適正なプロトコルによって証
明されるように)、アドレス指定されたI/Oプロセッサ
は、アドレス指定されたロケーションにデータをライト
し、ライト動作が成功して完了したという肯定応答指示
でメモリモジュールに応答する。両メモリモジュール14
と15は、I/Oプロセッサ26又は27からの応答(第9図の
アドレスとデータの肯定応答信号)をモニタしていて、
両メモリモジュールは、ライン33-1と33-2の動作ステイ
タスでCPUに応答する。(もしこれがリードであるなら
ば、プライマリのメモリモジュールのみがデータを戻す
が、しかし両方がステイタスを戻す。)CPUは、両方が
ライトを正しく実行したか、1個だけであったか、無し
であったかを決定できる。もし1個だけが良好なステイ
タスを戻し、それがプライマリならば、所有権を変える
必要は無い。しかしもしバックアップが良好に戻され、
プライマリが悪く戻されるならば、所有権の変更が強行
され、正しく実行したものをプライマリにする。どちら
の場合も、割り込みが故障を報告するために入れられ
る。この点で、CPUは、悪いのがメモリモジュールであ
るか、メモリモジュールの下流側の何かであるかを知ら
ない。それで、同様なライトがI/Oプロセッサに対して
試みられる。しかし、これが成功するならば、メモリモ
ジュールが悪いことを必ずしも証明する必要が無い。な
ぜなら、初めにアドレス指定されたI/Oプロセッサが例
えばバス24または25のラインに接続され、パリティエラ
ーを起こしたからである。それで、システムは、選択的
に、I/Oプロセッサのシャットオフと操作のリトライを
行い、両メモリモジュールが同じI/Oプロセッサにライ
ト動作を正しく実行できるかを見る。もしそうならば、
システムは、交換され再統合されるまで悪いI/Oプロセ
ッサをオフラインにして動作を実行できる。しかし、も
しリトライが1個のメモリから悪いステイタスをなお与
えるならば、メモリをオフラインにでき、あるいは、他
の要素において故障がメモリにあるか無いかを確実にす
るために故障分離ステップがさらに採られる。これは、
全コントローラ30を1個のI/Oプロセッサ26又は27に切
り換えてオフのI/Oプロセッサにリセットコマンドを送
り、生きている両メモリモジュールでオンラインのI/O
プロセッサとのリトライの通信を出力することを含む。
そして、もしリセットI/Oプロセッサがバス24又は25を
悪化させているならば、そのバスドライバは、リセット
によって切られ、そうして、もしオンラインI/Oプロセ
ッサへの通信のリトライが(両バス24と25を介して)良
好なステイタスを返すならば、リセットI/Oプロセッサ
が故障であることが分かる。とにかく、各バスエラーに
対して、あるタイプの故障分離シーケンスが実行され、
どのシステム部品がオフラインにしなければならないか
を決定する。
<同期> 図示される実施例において使用されるプロセッサ40は、
第4図と第5図を参照して上に説明したように、重なっ
た命令実行を行うパイプラインアーキテクチャである。
この実施例において使用される同期技法は、サイクル計
数、すなわち、命令が実行される毎に第2図のカウンタ
71とカウンタ73をインクリメントすることによるので
(米国出願第118,503号に一般的に開示されているよう
に)、何がプロセッサ40における命令の実行であるかを
定義しなければならない。まっすぐな定義は、パイプラ
インが進むごとに命令が実行されることである。コント
ロールバス43の1本のコントロールラインは、パイプラ
インがストールされることを示す信号ラン#である。ラ
ン#が高レベルであるときは、パイプラインはストール
され、ラン#が低レベル(論理0)であるときは、パイ
プライン各マシンサイクル毎に進む。このラン#信号
は、数値プロセッサ46においてプロセッサ40のパイプラ
インをモニタするために用いられ、そうして、このプロ
セッサ46は、関連するプロセッサ40とともにロックステ
ップでランすることができる。コントロールバス43での
このラン#信号は、クロック17とともにランサイクルを
計数するためにカウンタ71と73によって用いられる。
好ましい実施例において、カウンタレジスタ71のサイズ
は、4096すなわち212に選ばれる。これが選択された理
由は、クロック17に使用される結晶発振子の許容範囲
が、平均して約4Kランサイクルにおけるドリフトがプロ
セッサチップ40によってランされるサイクル数において
1個のスキューすなわち差を生じるようなものだからで
ある。この差は、以下に説明されるように割り込み同期
の正しい動作を正当に許容するようなものである。1つ
の同期メカニズムは、カウンタ71がオーバーフローする
ときはいつでもCPUに同期を起こさせるように作用を強
いることである。1つのそのような作用は、カウンタ71
からのオーバーフロー信号OVFLに対応してキャシュミス
を強いることである。これは、次のIキャシュのための
コントロールバス43の誤ったミス信号(例えばセットさ
れないタグバリッドビット(TagValid bit)を単に発生
することによって行うことができ、こうしてキャシュミ
ス例外ルーチンをエンターさせ、その結果生じたメモリ
参照は、任意のメモリ参照が行われるように同期を確立
させる。カウンタ71のオーバーフローに対して同期させ
る他の方法は、プロセッサ40にストールをさせることで
ある。これは第2図の論理回路71aを介してコントロー
ルバス43にCPビジー(コプロセッサビジー)信号を発生
するオーバーフロー信号OVFLを用いて行うことができ
る。このCPビジー信号はCPビジーが主張されなくなるま
で、常にプロセッサ40にストールをエンターすることに
なる。全3個のプロセッサは、同じコードを実行してい
てそのカウンタ71に同じサイクルを計数するので、この
ストールをエンターする。しかし、CPUがストールをエ
ンターする実際の時間は変化する。論回路71aは、入力
R#を介して他の2個のプロセッサのバス43からラン#
を受信し、そうして全3個がストールしたときに、CPビ
ジー信号がリリースされ、プロセッサは、再び同期して
ストールから出る。
こうして、2つの同期技法が説明された。第2の技法で
は、同期はメモリモジュールの回路100におけるメモリ
参照から生じ、第2の技法では、いま説明したように、
カウンタ71のオーバーフローによって生じる。さらに、
以下に説明されるように、割り込みが同期化される。し
かし、注意するべき重要なことは、プロセッサ40は、基
本的にはそれ自身のクロックで自由にランしていて、同
期イベントが発生する場合を除いて、実質的に相互に結
合されていない。マイクロプロセッサが第4図と第5図
に示されたように使用される事実は、単独のクロックを
用いてのロックステップ同期をより困難にしていて、性
能を低下させている。また、ライトバッファ50の使用
は、プロセッサを結合しないように役立ち、ましてプロ
セッサの密接な結合に有効ではないであろう。同様に、
命令キャシュとデータキャシュ及びTLB83を用いた仮想
メモリ管理かなる高性能は、密接な結合が使用されたな
らばさらに困難になり、性能は悪影響を受けるだろう。
割り込み同期技法は、リアルタイムといわゆる「仮想タ
イム」を区別しなければならない。リアルタイムは、外
部の実際の時間、壁の時計の時間であり、秒単位で測定
され、又は便宜上例えば60nsecの分割であるマシンサイ
クルで測定される。もちろん、クロック発生器17はそれ
ぞれリアルタイムでクロックパルスを発生する。仮想タ
イムは、各プロセッサチップ40の内部サイクル計数タイ
ムであり、各のサイクルカウンタ71と73で測定される。
すなわち、プロセッサチップによって実行される命令の
命令数であり、ある任意の開始点からの命令において測
定される。第10図を参照して、リアルタイム(t0からt
12として示される)と仮想タイム(命令数(カウントレ
ジスタ73のモジューロ16計数)I0からI15として示され
る)との間の関係が図示される。第10図の各行は、1個
のCPU-A,-B又は‐Cのサイクル計数であり、各列は、リ
アルタイムでの「点」である。CPUに対するクロック
は、位相がずれ易い。そこで、実際の時間の相関は、第
10a図に示されるようなものであり、ここで、命令数
(列)は完全には並んでおらず、すなわち、サイクル計
数は、並べられたリアルタイムマシンサイクルの境界で
変化しない。しかし、第10図の図示は、説明の目的には
十分である。第10図において、リアルタイムt3でCPU-A
は第3の命令にあり、CPU-Bは計数9にあり9番目の命
令を実行していて、CPU-Cは4番目の命令にある。リア
ルタイムも仮想タイムも進むことが可能なだけであるこ
とに注意する。
CPUのプロセッサチップ40は、リソースが利用出来ない
ある条件の下でストールする。例えば、ロードまたは命
令フェッチの間のDキャシュ45またはIキャシュ44のミ
ス、ライトバッファ50がストア動作の間に一杯であると
いう信号、コプロセッサ46がビジーである(コプロセッ
サが、データ依存性又は制限された処理リソースにより
取り扱えない命令を受信した)というコントロールバス
43を介しての「CPビジー」信号、またはマルチプライア
/デバイダ79がビジーである(内部のマルチプライア/
デバイダ回路が、プロセッサが結果レジスタをアクセス
しようとしたときに動作を完了していなかった)ことで
ある。もちろん、キャシュ44と45は、プロセッサ40によ
る介在なしに状態を変化しない「パッシブリソース」で
ある。しかし、残りのものは、プロセッサがなんら作用
しなくても状態を変化出来るアクティブリソースであ
る。例えば、ライトバッファ50は、(プロセッサが他の
ストア動作を行わない限り)プロセッサによる作用なし
にフルからエンプティに変化する。そこでストールに、
バッシブリソースのストールとアクティブリソースのス
トールの2つのタイプがある。アクティブリソースのス
トールは、インターロックストールと呼ばれる。
CPU-A,-B,-Cで実行されるコードストリームが同一であ
るので、3個のCPUのキャシュ44と45のようなパッシブ
リソースの状態は、仮想タイムの総ての点で必然的に同
じである。もしストールがパッシブリソース(例えばデ
ータキャシュ45)での衝突の結果であれば、全3個のプ
ロセッサはストールを行い、ただ1つの変数は、ストー
ルの長さである。第11図を参照して、キャシュミスがI4
で発生し、このミスの結果のグローバルメモリ14又は15
へのアクセスが8クロック(実際には8クロック以上で
あってもよい)の時間がかかったと仮定する。この場
合、CPU-Cは、t1でグローバルメモリ14又は15へのアク
セスを開始し、グローバルメモリのコントローラ117
は、第1のプロセッサCPU-Cがメモリアクセスの開始を
信号するときにメモリアクセスを開始する。コントロー
ラ117は、CPU-BとCPU-Cがそれぞれメモリアクセスに必
要な8クロックより少なくストールするけれども、アク
セス8クロック遅れてt8で完了する。その結果、全CPU
は、リアルタイムでも仮想タイムでも同期される。この
例は、また、DRAM104へのアクセスの重複と回路100での
ボーティングとの利点を示す。
インターロックストールは、パッシブリソースストール
から異なった状況を示す。1個のCPUは、他のCPUが全く
ストールをしないときにインターロックストールをする
ことが出来る。第12図を参照して、ライトバッファ50に
よって起こされるインターロックストールが図示され
る。CPU-AとCPU-Bのサイクル計数が示され、CPU-AとCPU
-Bのライトバッファ50からのフル(full)フラグAwb
wbが、サイクル計数の下に示される(ハイレベルすな
わち論理1はフルを意味し、ローレベルすなわち論理0
はエンプティを意味する)。CPUはストア動作が実行さ
れる毎に、フルフラグの状態をチェックする。もしフル
フラグがセットされるならば、CPUは、フルフラグがク
リアされストア動作を完了するまでストールする。ライ
トバッファ50は、もしストア動作がバッファを満たすな
らば、フルフラグをセットし、ストア動作がバッファか
ら1ワードを流出して次のCPUストア動作のための位置
をフリーにするときはいつでもフルフラグをクリアす
る。時間t0で、CPU-Bは、3クロックCPU-Aの先にあり、
ライトバッファは共にフルである。ライトバッファがグ
ローバルメモリにライト動作を行っていると仮定する
と、このライトがt5の間に完了するとき、ライトバッフ
ァフルフラグはクリアされる。このクリアは、リアルタ
イムでt6に同期して起こるが(第11図に図示される理由
により)、仮想タイムでは同期していない。いま、サイ
クル計数I6での命令は、ストア動作であると仮定する
と、CPU-Aは、ライトバッファフルフラグがクリアされ
た後でt6でこのストアを実行するが、しかし、CPU-Bはt
3でこのストア命令を実行し、そうして、ライトバッフ
ァフルフラグがなおセットされていることを見いだして
3クロックの間ストールをしなければならない。こうし
て、CPU-Bはストールをするが、CPU-Aはストールをしな
い。
1個のCPUはストールをするかも知れず他のCPUはストー
ルをしないかも知れないという性質は、サイクルカウン
タ71の解釈に制限を課する。第12図において、割り込み
がサイクル計数I7で(CPU-BがI6命令からストールをし
ている間に)複数のCPUに示されたと仮定する。サイク
ル計数I7に対するランサイクルは、t7で両CPUに対して
起こる。もしサイクルカウンタだけがCPUに割り込みを
示すなら、CPU-Aはサイクル計数I7で割り込みを見る
が、CPU-Bはサイクル計数I6から生じるストールサイク
ルの間に割り込みを見る。そうして、割り込みを示すこ
の方法が、この2個のCPUに異なった命令での例外、も
し全CPUがストールされるか又はストールされていない
場合には起こらないような条件が採用される。
サイクルカウンタの解釈についての別の制限は、サイク
ル計数の検出と作用の実行との間に遅れがあってはなら
ないことである。再び第12図を参照して、割り込みがサ
イクル計数I6でCPUに示されるが、実行の制限のために
余分のクロックの遅れがサイクル計数I6の検出とCPUへ
の割り込みの提示の間に介在すると仮定する。その結果
は、CPU-Aが、この割り込みをサイクル計数I7で確認す
るが、CPU-Bは、サイクル計数I6からのストールの間に
割り込みを確認して、2個のCPUに異なった命令で例外
を採らせる。再び、リアルタイムで命令パイプラインの
状態をモニタすることの重要性が図示される。
〈割り込み同期〉 第1図から第3図までの3個のCPUは、単独の論理プロ
セッサとして機能することが要求され、従って、3個の
CPUのプログラミングモデルが単独の論理プログラミン
グのプログラミングモデルであることを保証するために
その内部状態に関してある制限を実行することを要求す
る。誤りモードや診断モードを除いて、上記3個のCPU
の命令ストリームは同一であることが要求される。もし
同一でなかったら、第6図のボーティング回路100での
グローバルメモリアクセスのボーティングが困難になる
だろう。すなわち、ボートするものは、1個のCPUが故
障しているのか、異なったシーケンスの命令を実行して
いるのか分からない。同期スキームは、もし任意のCPU
のコードストリームが、その他のCPUのコードストリー
ムから分岐するならば故障が起こったと仮定するように
設計される。割り込み同期は、単独のCPUイメージを維
持する1つのメカニズムを提供する。
すべての割り込みは、仮想タイムに同期して起こること
が要求され、3個のプロセッサCPU-A、CPU-BとCPU-Cの
命令ストリームが割り込みの結果として分岐しないこと
を保証する(分岐する命令ストリームには他の原因もあ
る。例えば、1個のプロセッサが他のプロセッサによっ
てリードされたデータと異なったデータをリードするこ
と)。仮想タイムに対して非同期に起こる割り込みがコ
ードストリームを分岐させるシナリオは、いくつかあ
る。例えば、プロセスAが完了する前にコンテクストス
イッチをオンにさせるがプロセスAが他のCPUで完了し
た後でコンテクストスイッチをオンにさせる割り込み
は、その後のある点で、1個のCPUがプロセスAの実行
を続けるが他方のCPUはプロセスAが既に完了している
ためプロセスAを実行出来ないという状況をもたらす。
もしこの場合に割り込みが仮想タイムに非同期に起こる
ならば、例外プログラムカウンタが異なるという事実が
問題を起こすであろう。例外プログラムカウンタの値を
グローバルメモリに書き込む行為は、ボーターが3個の
CPUから異なったデータを検出し、ボートフォールトを
生じるという結果になるだろう。
CPUにおけるあるタイプの例外は、本来仮想タイムに同
期している。1つの例は、ブレークポイント命令の実行
によって生じるブレークポイント例外である。全CPUの
命令ストリームが同一なので、ブレークポイント例外は
3個のCPUにおける仮想タイムにて同じ点で生じる。同
様に、全てのそのような内部例外は、本来仮想タイムに
同期して生じる。例えば、TLB例外は本来同期する内部
例外である。TLB例外は仮想ページ数がTLB83のどのエン
トリにも適合しないために生じる。アドレスを解釈する
ということが(ブレークポイント例外におけるように正
確に)単に命令ストリームの機能なので、解釈は、本来
仮想タイムに同期する。TLB例外が仮想タイムに同期す
ることを確実にするために、TLB83の状態は全3個のCPU
11、12、13において同一でなければならず、これは、TL
B83がソフトウエアだけによって変更できるので、保証
される。再び、全CPUが同じ命令ストリームを実行する
ので、TLB83の状態は常に仮想タイムに同期して変化さ
れる。そうして、一般的経験則として、もし行動がソフ
トウエアにより実行されるなら、その行動は仮想タイム
に同期している。もし行動がサイクルカウンタを用いな
いハードウエアにより実行されるなら、その行動は一般
にリアルタイムに同期である。
外部の例外は、本来仮想タイムに同期していない。I/O
装置26、27又は28は、3個のCPU11、12、及び13の仮想
タイムについて情報を有しない。従って、I/O装置によ
って発生される全ての割り込みは、以下に説明するよう
に、CPUに示される前に仮想タイムに同期されなければ
ならない。浮動点例外は、浮動点コプロセッサ46がCPU
内でマイクロプロセッサ40に堅く結合されるので、I/O
装置割り込みと異なっている。
外部装置は、3個のCPUを1つの論理的プロセッサとし
て見て、CPU間の同期や同期の欠乏についての情報を有
しない。従って、外部割り込みは、各CPUの個々の命令
ストリーム(仮想タイム)と同期である割り込みを生成
することが出来ない。どのような種類の同期も無けれ
ば、もしある外部装置がリアルタイムt1の時間に割り込
みを駆動し、その割り込みがその時間に全CPUに直接示
されるならば、3個のCPUは、異なった命令で例外トラ
ップをとり、3個のCPUのアクセプトされない状態が生
じる。これは、リアルタイムに同期であるが仮想タイム
に同期しないイベント(割り込みの主張)の例である。
複数の割り込みは、第1図から第3図までのシステムに
おいて、割り込みについて分散されたボートを実行し、
決定されたサイクル計数でプロセッサに割り込みを示す
ことにより、仮想タイムに同期する。第13図は、第2図
の割り込み同期論理回路65のより詳細なブロック図を示
す。各CPUは、モジュール14又は15から生じるライン69
又は70からの外部割り込みを捕捉する分配器135を含
む。この捕捉はあらかじめ決定されたサイクル計数で、
例えばカウンタ71から入力ラインCC-4上で信号が出力さ
れる計数−4で起こる。捕捉された割り込みは、CPU間
バス18を介して他の2個のCPUへ分配される。これらの
分配された割り込みは、未決定割り込みと呼ばれる。各
CPU11、12、13から1個の3個の未決定割り込みがあ
る。ボータ回路136は、未決定割り込みを捕捉出力、全C
PUが外部割り込み要求を受信したかを確認するボートを
行う。(サイクルカウンタ71で検出される)あらかじめ
決定されたサイクル計数で、この例では入力ラインCC-8
により受け取られたサイクル8で、割り込みボータ136
は、ライン137とバス55と43を介して各マイクロプロセ
ッサ40の割り込みピンに割り込みを示す。割り込みを示
すために用いられるサイクル計数があらかじめ決定され
ているので、全マイクロプロセッサ40は、同じサイクル
計数で割り込みを受け取り、こうして、割り込みが仮想
タイムに同期されている。
第14図は、仮想タイムに対して割り込みを同期するため
のイベントのシーケンスを示す。CPU-A,CPU-B及びCPU-C
と示された行は、リアルタイムでの1点での各CPUのカ
ウンタ71におけるサイクル計数を示す。IRQ PENDI
NG,IRQ PENDING及びIRQ PENDINGと示された
行は、ボータ136の入力へCPU間バス18を介して結合され
る割り込みの状態を示す(1は、未決定ビットがセット
されていることを意味する)。IRQ A,IRQ B,及びIRQ
Cと示された行は、マイクロプロセッサ40の割り込み
入力ピンの状態(ライン137の信号)を示し、ここで1
は割り込みが入力ピンに存在することを意味する。第14
図で、外部の割り込み(EX IRQ)は、t0でライン69に
主張される。もし割り込み分配器135が割り込みを捕捉
し、CPU間バス18にサイクル計数4で分配するならば、I
RQ PENDINGは時間t1で1になり、IRQ PENDIN
Gは時間t2で1になり、IRQ PENDINGは時間t4で1
になる。もし割り込みボータ136がサイクル計数8で割
り込み未決定ビットをボートするならば、IRQ Cは時
間t5で1になり、IRQ Bは時間t6で1になり、IRQ
は時間t8で1になる。その結果、割り込みは、リアルタ
イムでは異なった点であるが仮想タイムでは同一の点
(すなわちサイクル計数8)でCPUに示される。
第15図に、第14図に示されたアルゴリズムを必要とする
シナリオを変更して示す。ここではサイクルカウンタ71
がモジューロ8カウンタにより表されることに注意す
る。外部割り込み(EX IRQ)は時間t3で主張される。
割り込み分配器135はこの割り込みを捕捉し、サイクル
計数4でCPU間バス18に割り込みを分配する。CPU-BとCP
U-Cが時間t3の前にサイクル計数を実行しているので、
その割り込み分配器は外部割り込みを捕捉することがで
きない。しかし、CPU-Aは時間t3の前にサイクル計数を
実行する。その結果、CPU-Aは時間t4で外部割り込みを
捕捉して分配する。しかし、もし割り込みボータ136が
サイクル計数7で割り込み未決定ビットを捕捉してボー
トするならば、CPU-Aの割り込みボータ136は、他の2個
の割り込み未決定ビットがセットされていないとき、時
間t7でIRQ PEND信号を捕捉する。CPU-Aの割り込み
ボータ136は全てのCPUが外部割り込みを分配していない
ことを認識し、捕捉された割り込み未決定ビットを保持
レジスタ138に出力されて格納される。CPU-BとCPUCの割
り込みボータ136は単独の割り込み未決定ビットをそれ
ぞれ時間t5とt4に捕捉する。CPU-Aの割り込みボータの
ように、これらのボータは、全ての割り込み未決定ビッ
トがセットされていないことを認識し、こうして、セッ
トされた単独の割り込み未決定ビットが保持レジスタ13
8に出力されて格納される。各CPUのサイクルカウンタ71
は、サイクル計数7に達するとき、ロールオーバーし、
サイクル計数0で計数を開始する。外部割り込みはまだ
主張されているので、CPU-BとCPU-Cの割り込み分配器13
5は、それぞれ時間t10とt9で外部割り込みを捕捉する。
これらの時間は、サイクル計数が4に等しくなったとき
に対応する。時間t12で、CPU-Cの割り込みボータは、CP
U間バス18に割り込み未決定ビットを捕捉する。ボータ1
36は、全C外部割り込みを捕捉して分配することを決定
し、プロセッサチップ40に割り込みを示す。時間t13
時間t15に、CPU-BとCPU-Aの割り込みボータ136は、割り
込み未決定ビットを捕捉し、割り込みをプロセッサチッ
プ40に示す。その結果、全プロセッサチップが同じ命令
で外部割り込み要求を受信したことになり、保持レジス
タに保存されていた情報は必要で無くなる。
〈保持レジスタ〉 第15図に関して上述に示された割り込みシナリオにおい
て、ボータ136は、若干のステート割り込み情報を保存
するために保持レジスタ138を使用する。特に保存され
たステートは、全CPUでなくいくつかのCPUが外部割り込
みを捕捉し分配したことであった。もしシステムが(第
15図の状況のように)どんな故障もし無い場合は、前の
例に示したように、外部割り込みが保持レジスタの使用
なしに仮想タイムに同期出来るので、このステート情報
は必要でない。アルゴルズムは、割り込みボータ136が
割り込み未決定ビットをあらかじめ決定されたサイクル
計数で捕えボートすることである。全ての割り込み未決
定ビットが主張されるとき、割り込みは、そのあらかじ
め決定されたサイクル計数でプロセッサチップに示され
る。第15図の例において、割り込みはサイクル計数7で
ボートされた。
第15図を参照して、もしCPU-Cが誤りをし、誤りモード
が割り込み分配器135が正しく機能しないようなもので
あれば、このとき、もしプロセッサチップ40に割り込み
を示す前に全割り込み未決定ビットがセットされるまで
割り込みボータ136が待つならば、その結果、割り込み
は示されるようになることは無い。こうして、ただ1個
のCPUのただ1個の誤りが全CPUについての全体の割り込
みのチェーンを機能できないようにする。
保持レジスタ138は、最後の割り込みボートサイクルが
全部ではないが少なくとも1個の割り込み未決定ビット
を捕捉したことをボータ136が知るメカニズムを提供す
る。割り込みボートサイクルは、割り込みボータが割り
込み未決定ビットを捕捉しボートするサイクル計数で起
こる。数個の割り込み未決定ビットがセットされる結果
となる2つだけのシナリオがある。1つは、第15図に関
連して示された示されたシナリオであって、ここでは、
外部割り込みは、あるCPUの割り込み分配サイクルの前
であるがその他のCPUの割り込み分配サイクルの後に主
張される。第2のシナリオでは、少なくとも1個のCPU
が、割り込み分配器をディスエーブルにするような誤り
をする。もし数個の割り込み未決定ビットだけが割り込
みボートサイクルでセットされる理由が第1のシナリオ
であるならば、割り込みボータは、全割り込み未決定ビ
ットが次の割り込みボートサイクルでセットされること
が保証される。従って、もし保持レジスタがセットされ
ていて全部でない割り込み未決定ビットがセットされて
いることを割り込みボータが発見するならば、エラーが
1個以上のCPUに存在するはずである。これは、各CPUの
保持レジスタ138が割り込みサービス時にクリアされる
ことを仮定する。そのため、保持レジスタの状態は割り
込み未決定ビットについての新鮮でない状態を表さな
い。エラーの場合、割り込みボータ136は、プロセッサ
チップ40に割り込みを示すことができ、同時に、エラー
が割り込み同期論理回路によって検出されたことを示
す。
割り込みボータ136は、実際にはどんなボーティングも
せず、その代わり割り込み未決定ビットと保持レジスタ
137の状態を検査して、プロセッサチップ40に割り込み
を示すか否かと割り込み論理回路にエラーを示すか否か
を決定するだけである。
〈モジューロサイクルカウンタ〉 第15図の割り込み同期の例は、割り込みカウンタをモジ
ューロNカウンタ(例えばモジューロ8カウンタ)とし
て表した。モジューロNサイクルカウンタの使用は、割
り込みボートサイクルの概念を可能にすることにより、
割り込みボーティングアルゴリズムの説明を簡単にし
た。モジューロNサイクルカウンタを使用すると、割り
込みボートサイクルは、0とN−1(Nはサイクルカウ
ンタのモジューロである)の間にある単独のサイクル計
数として説明できる。サイクルカウンタのどんな数も割
り込みボートサイクルのために選択でき、サイクル計数
は、Nサイクル計数毎に起こることが保証される。モジ
ューロ8カウンタに対して第15図に示されるように、割
り込みボートサイクルは8計数毎に起こる。割り込みボ
ートサイクルは、モジューロNサイクルカウンタの周期
的性質を説明するためにだけここで用いられる。モジュ
ーロNサイクルカウンタの特定のサイクル計数にキーと
なるどのイベントもNサイクル計数毎に起こることが保
証される。明らかに、不定数(すなわち非反復性カウン
タ71)は使用できない。
Nの値は、システムに正の効果を持つシステムパラメー
タを最大にし、システムに負の効果を持つシステムパラ
メータを最小にするように選択される。まず、いくつか
のパラメータが示される。CとCは、それぞれ、割
り込みボートサイクルと割り込み分配サイクルである
(第13図の回路では、これらはそれぞれCC-8とCC-4であ
る)。CC-8とCC-4の値は、0とN−1(Nはサイクルカ
ウンタのモジューロである)の間の範囲にあらねばなら
ない。Dmaxは、同期論理回路によって許容され得る3
個のプロセッサCPU-A,CPU-B及びCPU-Cの間のサイクル計
数ドリフトの最大量である。このプロセッサドリフト
は、リアルタイムの1点で各CPUからサイクルカウンタ7
1のスナップショットをとることにより決定される。ド
リフトは、最も遅いCPUのサイクル計数を最速のCPUのサ
イクル計数から差し引くこと(モジューロN減算として
なされる)により計算される。Dmaxの値は、NとC
とCの関数として表される。
まず、Dmaxは、差C−Cの関数として表される。
ここに、差演算はモジューロN減算として実行される。
これは、Dmaxを最大にするCとCの値を選択する
ことを可能にする。第16図のシナリオを参照し、C
8とC=9を仮定する。第16図から、プロセッサドリ
フトはDmax=4であると計算出来る。ライン69の外部
割り込みは、時間t4で主張される。この場合、CPU-B
は、時間t5で割り込みを捕捉し分配する。このシナリオ
は、前に示された割り込み同期アルゴリズムとつじつま
が合わない。なぜなら、CPU-Aが割り込み分配サイクル
を行った前にCPU-Bがその割り込みボートサイクルを実
行するからである。このシナリオの欠陥は、CとC
の差よりも更に離れてドリフトすることである。この関
係は、形式的に次のように書くことができる。
方程式(1) C−C<Dmax−e ここに、eは、CPU間バス18に伝達される割り込み未決
定ビットのために必要な時間である。前の例では、eは
0と仮定されていた。壁時計の時間がクロックサイクル
(ランサイクル)のインクリメントで量子化されている
ので、eも量子化出来る。こうして、次の式が得られ
る。
方程式(2) C−C<Dmax−1 ここに、Dmaxは、サイクル計数の整数値として表され
る。
次に、最大のドリフトがNの関数として表すことができ
る。第17図は、N=4でプロセッサドリフトD=3の場
合のシナリオを示す。C=0と仮定する。各プロセッ
サのサイクル計数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であるので、これは問題を示
す。同期論理回路は、問題が無いかのように続行し、こ
うして等しいサイクル計数でプロセッサに割り込みを示
す。しかし、各プロセッサのQは異なっているので、割
り込みは異なった命令で複数のプロセッサに示される。
従って、Nの関数としてのDmaxの関係は次式で表され
る。
方程式(3) N/2>Dmax ここに、Nは偶数であり、Dmaxはサイクル計数の整数
として表される。ここで、方程式(2)と(3)は共に
標本化理論におけるナイキストの定理に等価であること
を示すことができる。方程式(2)と(3)とを結合す
ることによって次式を得る。
方程式(4) C−C<N/2−1 ここに、Nの与えられた値に対してCとCの最適の
値が選択できる。
上述の全方程式は、Nが出来るだけ大きくあるべきであ
ることを示唆する。Nを小さくさせようとする唯一の因
子は、割り込みの潜在である。割り込みの潜在は、ライ
ン69での外部割り込みの主張とライン137でのマイクロ
プロセッサチップへの割り込みの提示との間の時間間隔
である。どのプロセッサが割り込みの潜在を決定するた
めに使用されるべきかは明快な選択でない。3個のマイ
クロプロセッサは、クロック源における結晶発振子にお
けるわずかな違いや他の因子のために異なった速度で動
作する。最も高速のプロセッサと、最も遅いプロセッサ
と、その他のプロセッサがある。システムの性能は最も
遅いプロセッサの性能によって最終的に決定されるの
で、最も遅いプロセッサに関して割り込みの潜在を定義
することは合理的である。最大の割り込みの潜在は、 方程式(5) Lmax=2N−1 であり、ここに、Lmaxは、サイクル計数で表された最
大の割り込みの潜在である。最大の割り込みの潜在は、
最速のプロセッサの割り込み分配サイクルCの後であ
るが最も遅いプロセッサの割り込み分配サイクルC
前に外部割り込みが主張されたときに、最大の割り込み
の潜在が起こる。平均の割り込みの潜在の計算は、最速
のプロセッサの割り込み分配サイクルの後でかつ最も遅
いプロセッサの割り込み分配サイクルの前に外部割り込
みが起こる確率に依存するので、さらに複雑である。こ
の確率は、多数の外部因子によって順番に決定されるプ
ロセッサ間のドリフトに依存する。もしこれらの確率が
0であるならば、平均の潜在は次の式で表される。
方程式(6) Lave=N/2−(C−C) これらの関係式を用いて、N,C、及びCの値が、D
maxと割り込みの潜在とに対するシステムの要請を使用
して決定される。例えば、N=128、(C−C)=1
0,Lave=74又は約4.4マイクロ秒(ストールサイクルな
しで)を選択する。4ビット(4つの2進ステージ)71
aが割り込み同期カウンタとして使用され、分配出力と
ボート出力が説明したようにCC-4とCC-8にある好ましい
実施例を用いて、N=16,C=8,C=4であることが
分かり、そうして、Lave=16/2+(8−4)=12サイ
クルすなわち0.7ミリ秒である。
〈ローカルメモリのためのリフレッシュ制御〉 リフレッシュカウンタ72は、カウンタ71と71aがまさに
計数するのと同様に、(マシンサイクルでなく)非スト
ールサイクルを計数する。目的は、リアルタイムよりは
むしろ仮想タイムで測定して、同じサイクル計数で各CP
Uにリフレッシュサイクルを導入ことである。好ましく
は、各CPUは、命令ストリームにおいて他のCPUと同じ点
でリフレッシュサイクルを課する。ローカルメモリ16の
DRAMは、グローバルなメモリについて上述したように8m
sec毎に512サイクルの周期でリフレッシュされねばなら
ない。こうして、カウンタ72は、512の1行をアドレス
して、15msec毎に1回DRAM16にリフレッシュコマンドを
出力しなければならない。もしメモリ動作がリフレッシ
ュの間に要求されたならば、リフレッシュが終了するま
でビジー応答が生じる。しかし、各CPUにそれ自身のロ
ーカルメモリのリフレッシュをリアルタイムで他のCPU
に独立に処理させることは、CPUを同期から外れさせ、
従って、余分な制御が必要になる。例えば、もし丁度除
算命令が始まるようにリフレッシュモードがエンターさ
れるならば、タイミングは、1個のCPUが他のCPUより2
クロックだけ長くかかるようなタイミングになる。又
は、もし割り込み可能でないシーケンスがより高速なCP
Uによりエンターされ他のCPUがこのルーチンにエンター
する前にリフレッシュに入るならば、CPUは、相互に離
れていく。しかし、これらの問題のいくつかを避けるた
めのサイクルカウンタ71を(リアルタイムの代わりに)
使用することは、ストールサイクルが計数されないこと
を意味する。そして、もしループに入って多くのストー
ルを生じさせるならば(7対1のストール・ラン比を生
じさせることが可能ならば)、周期が15msecの数値から
著しく減少されないならば、リフレッシュの仕様に合わ
ず、性能を劣化させる。この理由のために、第2図に示
されるように、ストールサイクルは第2カウンタ72aで
も計数され、このカウンタがリフレッシュカウンタ72で
計数されるのと同じ数に達する毎に、追加のリフレッシ
ュサイクルが導入される。例えば、リフレッシュカウン
タ72は、カウンタ71と歩調を合わせて、28すなわち256
ランサイクルを計数し、オーバーフローのときにリフレ
ッシュ信号が制御バス43を介して出力される。一方、カ
ウンタ72aは、(ラン#信号とクロック17に応答して)2
8ストールサイクルを計数し、オーバーフローする毎に
第2カウンタ72aがインクリメントされる(カウンタ72b
は単に8ビットカウンタ72aのためのビット9から11で
あってもよい)。そうして、リフレッシュモードが最後
にエンターされ、CPUはカウンタレジスタ72bの数によっ
て示される多数の追加のリフレッシュを行う。こうし
て、もし長期間のストールインテンシブな実行が起こる
ならば、リフレッシュの平均数は、15マイクロ秒毎に1
つの範囲内にあり、もし7×256までのストールサイク
ルが介在されるならば、最後にリフレッシュモードに行
くときにリフレッシュされた行の数が名目上のリフレッ
シュ速度まで追い付くので、リフレッシュサイクルを任
意に短くすることにより性能の劣化はない。
〈メモリ管理〉 第1図から第3図までのCPU11、12、及び13は、第18図
に図示されるように組織されたメモリ空間を備える。ロ
ーカルメモリ16が8Mバイトであり、グローバルメモリ14
又は15が32Mバイトである例を用いて、ローカルメモリ1
6が、キャシュすなわち別のメモリ空間であるよりはむ
しろ、CPUメモリアクセス空間の同じ連続的な0から40M
バイトまでのマップの一部である。0から8Mバイトまで
の部分を(3個のCPUモジュールで)3重化し、8から4
0Mバイト部分を2重化しているが、論理的には単に1つ
の0から40Mバイトまでの物理アドレス空間があるだけ
である。バス54で8Mバイトを越えたアドレスは、バスイ
ンターフェース56にメモリモジュール14と15に要求をさ
せるが、しかし、8Mバイト以下のアドレスは、CPUモジ
ュールそれ自身内でローカルメモリ16にアクセスする。
性能は、ローカルメモリ16で実行されるアプリケーショ
ンにより使用されるメモリをより多く配置することによ
り改善される。そして、もしメモリチップが高密度でよ
り低コストでより高速で利用できるならば、追加のロー
カルメモリが、追加のグローバルメモリと同様に付加さ
れる。例えば、ローカルメモリが32Mバイトであって、
グローバルメモリが128Mバイトであってもよい。一方、
非常に低コストのシステムが必要ならば、性能は主要な
決定的なファクタではなく、システムは、ローカルメモ
リなしに動作でき、そのような構成では性能の不利益が
高いけれども、すべてのメインメモリはグローバルメモ
リエリア(メモリモジュール14と15)である。
第18図のマップのローカルメモリ部分141の内容は、3
個のCPU11、12及び13における内容と同一である。同様
に、2個のメモリモジュール14と15は、どの与えられた
瞬間でもその空間142内の同じデータを全く同様に含
む。ローカルメモリ部分141内にはUNIXオペレーティン
グシステムのための核143(コード)が格納され、この
エリアは、各CPUのローカルメモリ16の固定された部分
内に物理的にマッピングされる。同様に、核データは、
各ローカルメモリ16の固定されたエリア141に割り当て
られる。ブートアップの時を除いて、これらのブロック
は、グローバルメモリ又はディスクへ、又はグローバル
メモリ又はディスクから交換されない。ローカルメモリ
の他の部分145は、ユーザプログラム(及びデータ)の
ページのために使用され、これらのページは、オペレー
ティングシステムの制御の下にグローバルメモリ14と15
のエリア146に交換される。グローバルメモリエリア142
は、エリア146におけるユーザーページのためのステー
ジングエリア(staging area)として、またエリア147
におけるディスクバッファとして使用される。もし全CP
Uが1ブロックのデータのライトを行うコード又はロー
カルメモリ16からディスク148へのコードを実行するな
らば、ディスクバッファエリア147にコピーをするため
の時間はI/Oプロセッサ26と27に直接にそしてI/Oコント
ローラ30を介してディスク148にコピーをする時間に比
べて無視できるので、シーケンスは、その代わりディス
クバッファエリア147にライトを行うことである。次
に、全CPUが他のコードの実行を進める間に、このディ
スクにライトをする動作が行われて、全CPUに対してト
ランスアペレントに、そのブロックをエリア147からデ
ィスク148へ移動する。同様な方法で、グローバルメモ
リエリア146は、ディスク以外のI/Oアクセス(例えばビ
デオ)の同様な処理のために、I/Oステージングエリア1
49を含んでマッピングされる。
第18図の物理的メモリマップは、各CPU内のプロセッサ4
0の仮想メモリ管理システムと関連する。第19図は、実
施例において使用されたR2000プロセッサチップの仮想
アドレスマップを図示する。しかしながら、ページング
と保護メカニズムを備えた仮想メカニズム管理を支持す
る他のプロセッサチップが対応する特徴を備えるであろ
うことが理解される。
第19図において、2つの別々の2Gバイトの管理アドレス
空間150と151が図示される。プロセッサ40は、2つのモ
ード、ユーザーモードと核モード、の1つで動作する。
当該プロセッサはただ、ユーザーモードにおいてエリア
150をアクセスでき、もしくは核モードにおいて両エリ
ア150と151をアクセスすることができる。核モードは、
多くの計算機に備えられている監視モードと同類であ
る。プロセッサ40は、例外が検出されてモードを核モー
ドに強いるまでは、通常はユーザーモードで動作するよ
うに構成され、ここで、例外からのリストア(RFE)命
令が実行されるまで核モードにとどまる。メモリアドレ
スが翻訳されすなわちマッピングされる方法は、マイク
ロプロセッサのオペレーティングモードに依存し、これ
はステイタスレジスタの1ビットによって定義される。
ユーザーモードにあるときに、2Gバイトの“Kuseg"とし
て参照される単独の一様な仮想アドレス空間150を利用
できる。各仮想アドレスはまた、最大64個のユーザープ
ロセスのための一義的仮想アドレスを形成するために、
6ビットのプロセスアイデンティファイア(PID)フィ
ールドを用いて拡張される。ユーザーモードにおけるこ
のセグメント150までのすべての参照は、TLB83を介して
マッピングされ、キャシュ144と145の使用は、TLBエン
トリにおける各ページエントリのためのビットセッティ
ングによって決定される。すなわち、あるページは、キ
ャシユ可能で有り得るし、あるページはプログラマによ
って特定されるのでキャシュ可能でない。
核モードにあるとき、仮想メモリ空間は、第19図の両エ
リア150と151を含む。この空間は、4つの別々のセグメ
ントkusegエリア150、kseg0エリア152、kseg1エリア153
及びkseg2エリア154を有する。核モードのためにkuseg
エリア150のセグメントは、ユーザーモードの“kuseg"
エリアに対応して2Gバイトのサイズを有する。従って、
核モードにおいて、プロセッサはまさにユーザーモード
の参照におけるようにこのセグメントに対して参照を行
って、ユーザーデータへの核アクセスを能率化する。ku
segエリア150は、ユーザーコードとユーザーデータを保
持するために使用される。しかし、オペレーティングシ
ステムは、しばしばこの同じコード又はデータを参照す
ることを必要とする。上記kseg0エリア152は、物理的ア
ドレス空間の初めの512Mバイトに直接にマッピングされ
る512Mバイトの核物理的アドレス空間であり、キャシュ
されるが、TLB83を使用しない。このセグメントは、核
実行可能コードとある核データのために使用され、ロー
カルメモリ16内に第18図のエリア143によって表され
る。上記kseg1エリア153は、kseg0エリアと同様に、物
理的アドレス空間の初めの512Mバイトに直接にマッピン
グされ、キャシュされず、TLBエントリを用いない。kse
g1エリアは、キャシュされないことだけがkseg0エリア
と異なる。kseg1エリアは、I/Oレジスタ、ROMコード及
びディスクバッファのためのオペレーティングシステム
によって使用され、第18図の物理的マップのエリア147
と149に対応する。kseg2エリア154は、1Gバイトの空間
であり、kusegエリアのように、キャシュを用い又は用
いずに、任意の物理的アドレスに仮想アドレスをマッピ
ングするためのTLB83エントリを使用する。このkseg2エ
リアは、ユーザーモードにおいてアクセスできず、核モ
ードにおいてのみアクセスできるということだけが、ks
egエリア150と異なる。オペレーティングシステムは、
ユーザーページテーブル(メモリマップ)のためと動的
に割り当てられるデータエリアのために、コンテキスト
スイッチに再びマッピングしなければならないスタック
とパープロセスデータ(per-process data)のためにks
eg2エリアを使用する。kseg2エリアは、全てか無かのア
プローチを必要とするよりはむしろ、パーページベーシ
ス(per page basis)への選択的キャシングとマッピン
グを可能にする。
マイクロプロセッサチップのレジスタ76又はPC80とバス
84での出力に発生される32ビットの仮想アドレスは、第
20図に示される。ここで分かるように、ビット0−11
は、第3図のバス42でのアドレスの下位12ビットとして
無条件に使用されるオフセットであり、ビット12−31
は、ビット29−31がksegエリア、kseg0エリア、kseg1エ
リア及びkseg2エリアの間で選択する仮想ページ数(VP
N)である。現在実行中のプロセスのためのプロセスア
イデンティファイア(PID)は、TLBによってもアクセス
可能なレジスタ内に格納される。64ビットのTLBエント
リは、同様に第20図に示され、ここで分かるように、仮
想アドレスからの29ビットVPNは、64ビットエントリの
ビット44−63に位置される20ビットVPNフィールドと比
較され、一方、同時に、PIDはビット38−43と比較され
る。もし対の一方が64の64ビットTLBエントリのいずれ
かに見いだされるならば、対となったエントリのビット
12−31でのページフレーム数PFNは、(他の基準が適合
することを仮定して)第3図のバス82と42を介した出力
として使用される。TLBエントリにおける他の1ビット
の値は、N,D,V及びGを含む。ここで、Nはキャッシュ
できない指標であり、もしセットされれば、ページはキ
ャシュできず、プロセッサは、キャシュ44又は45をまず
アクセスする代わりにローカルメモリ又はグローバルメ
モリをアクセスする。Dは、ライトプロテクトビットで
あり、もしセットされれば、ロケーションが「よごれ」
ていて、従って、ライト可能であるが、もし0ならば、
ライト動作はトラップを起こすことを意味する。Vビッ
トは、セットされれば、正当であることを意味し、単に
正当なビットを再セットするだけでTLBエントリをクリ
アできることを意味する。このVビットは、このシステ
ムのページのスワッピング配置において、ページがロー
カルメモリにあるかグローバルメモリにあるかを示すた
めに使用される。Gビットは、正当なTLB翻訳のためのP
IDマッチの要請を無視するグローバルアクセスを許可す
るためにある。
装置コントローラ30は、ローカルメモリに対してDMAを
直接に行うことができない。従って、グローバルメモリ
は、DMAタイプのブロック転送(典型的にはディスク148
などから)のためのステージングエリアとして使用され
る。CPUは、コントローラ(すなわちプログラムされたI
/Oによって動作を開始しまた制御するために、コントロ
ーラ30において直接に動作を実行することができる。し
かしながら、コントローラ30は、グローバルメモリに対
するDMAを除いて、DMAを行うことができない。コントロ
ーラ30は、VMEバス(バス28)マスタになることがで
き、I/Oプロセッサ26又は27を介してメモリモジュール1
4と15内のグローバルメモリに直接にリード動作とライ
ト動作を行う。
グローバルメモリとローカルメモリ(及びディスク)と
の間のページのスワッピングは、ページフォールトとエ
ージングプロセスとの一方によって開始される。プロセ
スが実行中でありグローバルメモリ又はディスクにある
ページから実行すること又はそのページからアクセスを
することを試みるときに、ページフォールトが生じる。
すなわち、TLB83は、ミスを示し、トラップが生じるで
あろう。従って、核のローレベルトラップコードがペー
ジのロケーションを示し、ページのスワッピングを開始
するためのルーチンがエンターされる。もし必要とされ
るページがグローバルメモリ内にあるならば、一連のコ
マンドがDMAコントローラに送られて、最も少なく最近
使用されたページをローカルメモリからグローバルメモ
リに書き込み、その必要とされたページをグローバルメ
モリからローカルメモリに読む出す。もしそのページが
ディスクにあるならば、コマンドとアドレス(セクタ)
が、ディスクに行ってそのページを得るためにCPUから
コントローラ30に書き込まれる。そして、メモリ参照を
するプロセスが一時停止される。ディスクコントローラ
がデータを見付けそれを送信する用意ができたとき、メ
モリモジュールによって(CPUに到達せずに)使用され
る割り込み信号が出力されて、グローバルメモリにその
ページを書き込むためにグローバルメモリへのDMAをデ
ィスクコントローラが始めることを許可する。終了した
ときは、CPUは割り込みされて、DMAコントローラの制御
の下にブロック転送を開始して、最も少なく使用された
ページをローカルメモリからグローバルメモリへスワッ
ピングし、必要なページをローカルメモリへ読み込む。
次に、元のプロセスが再び実行(ラン)可能にされ、そ
の状態は元に戻され、元のメモリ参照が再び生じ、ロー
カルメモリ内にその必要なページを見付ける。ページの
スワッピングを開始するもう1つのメカニズムは、エー
ジングルーチンであり、これにより、オペレーティング
システムは、各ページが最近使用されたか否かについて
又グローバルメモリへの押し出しを被っていないページ
についてマークしながら周期的にローカルメモリ内のペ
ージを通過していく。タスクスイッチはそれ自身ページ
のスワッピングを開始しないが、その代わり、新しいペ
ージがページフォールトをつくり始めたとき、ページは
必要なだけスワッピングされ、スワッピングのための候
補は、最近は使用されていないものである。
もしメモリ参照がなされTLBミスが示されるが、しかしT
LBミス例外から生じるページテーブルルックアップがそ
のページがローカルメモリ内にあることを示すならば、
このページがローカルメモリ内にあることを示すために
TLBエントリがなされる。すなわち、プロセスは、TLBミ
スが起こったときに例外をとり、(核データ区分内の)
ページテーブルに行き、テーブルエントリを見付け、TL
Bに対して書き込み、次に進むことが許される。しか
し、もしメモリ参照がTLBミスを示し、ページテーブ
が、対応する物理アドレスが(8Mバイトの物理アドレス
を越えて)グローバルメモリ内にあることを示すなら
ば、TLBエントリがこのページのために実行され、そし
て、プロセスが再び続くとき、プロセスは、前と同様に
TLB内にページエントリを見いだす。さらに1つの例外
は、正当なビットが0であって、そのページが物理的に
ローカルメモリ内にないことを示すために採られる。そ
して、このときは、例外は、グローバルメモリからロー
カルメモリにページをスワッピングするルーチンをロー
ドし、そして実行が進むことができる。第3の状況で
は、もしページテーブルが、メモリ参照のためのアドレ
スがローカルメモリやグローバルメモリ内に無くディス
クにあることを示すならば、システムは、上に示された
ように動作し、すなわち、プロセスはランキュー(run
queue)を去り、スリープキュー(sleep queue)に入
り、ディスク要求がなされ、ディスクがそのページをグ
ローバルメモリに転送しコマンド完了割り込み信号を出
力したとき、ページがグローバルメモリからローカルメ
モリへスワッピングされ、TLBは更新され、次にプロセ
スは再び実行できる。
〈プライベートメモリ〉 メモリモジュール14と15は同じ位置に同じデータを格納
でき、全3個のCPU11、12及び13はこれらのメモリモジ
ュールに対して等しいアクセスを行うが、各メモリモジ
ュールにはプライベートメモリとしてソフトウエア制御
のもとで割り当てられた小さなエリアがある。例えば、
第21図に図示されるように、メモリモジュール位置のマ
ップのエリア155は、プライベートメモリエリアとして
呼ばれ、全CPUが「プライベートメモリライト」コマン
ドをバス59に出力したときにのみライト可能である。実
施例では、プライベートメモリエリア155は、各CPUモジ
ュールのバスインターフェース56のレジスタ156に含ま
れるアドレスで出発する4Kのページである。この出発ア
ドレスは、CPUによってこのレジスタ156に書き込むこと
によってソフトウエア制御のもとで変更できる。プライ
ベートメモリエリア155は、さらに3個のCPUの間で分割
される。CPU-Aだけがエリア155aに書き込むことがで
き、CPU-Bだけがエリア155bに書く込むことができ、CPU
-Cだけがエリア155cに書く込むことができる。バス57の
1つのコマンド信号は、動作がプライベートライトであ
ることをメモリモジュール14と15に知らせるために、バ
スインターフェース56によってセットされる。そして、
これは、ストア命令からプロセッサ40によって発生され
たアドレスに対応してセットされる。アドレスのビット
(およびライトコマンド)は、(バスアドレスをレジス
タ156の内容を比較する)バスインターフェース内のデ
コーダ157によって検出され、バス57に対する「プライ
ベートメモリライト」コマンドを発生するために使用さ
れる。メモリモジュールでは、ライトコマンドがレジス
タ94、95及び96で検出され、アドレスとコマンドが全て
ボート回路100によって良好(すなわち一致している)
とボートされたとき、制御回路100は、ただ1個のCPUか
らのデータをバス101へと通すことを許可し、これは、
全CPUからのアドレスの2ビットによって決定される。
このプライベートライトの間に、全3個のCPUは、バス5
7に同じアドレスを示すが、バス58に異なったデータを
示す(この異なったデータは、例えばCPUへのステート
キューである)。メモリモジュールは、アドレスとコマ
ンドをボートし、アドレスバスに見られたアドレスフィ
ールドの部分によって基づいてただ1個のCPUからデー
タを選択する。CPUがデータをボートすることを可能に
するため、全3個のCPUは、両メモリモジュール14と15
内へ、CPUに一義的なステート情報の3個のプライベー
トライト動作(バス21、22、23に3個のライト動作があ
る)を行う。各ライト動作の間に、各CPUは、一義的デ
ータを送信するが、ただ1個だけが各時間にアクセプト
される。それで、全3個のCPUによって実行されるソフ
トウエアシーケンスは、(1)ロケーション155aにスト
ア、(2)ロケーション155bにストア、(3)ロケーシ
ョン155cにストアである。しかしながら、ただ1個のCP
Uからのデータが実際には各時間に書き込まれ、そのデ
ータはボートされない。なぜならば、異なっており又は
異る可能性があり、そしてボートされるならばフォール
トを示す可能性があるからである。次に、全CPUは、全
3個のロケーション155a,155b,155cを読んで、ソフトウ
エアによりこのデータを比較することによってデータボ
ートすることができる。このタイプの動作は、例えば診
断に又は原因レジスタ(cause register)データをボー
トするための割り込みにおいて使用される。
プライベートライトのメカニズムは、フォールト検出と
回復において使用される。例えば、もし全CPUがメモリ
リード要求をするときにバスエラー(メモリモジュール
14又は15がバッドステイタス(bad status)をライン33
−1または33−2に戻すようなとき)を検出するような
場合である。この点で、CPUは、他のCPUがメモリモジュ
ールから同じステイタスを受け取っているか否かを知ら
ない。CPUが故障で有り得るし、そのステイタス検出回
路が故障で有り得るし、あるいは、示されたように、メ
モリが故障で有り得る。それで、故障を分離するため
に、上述のバスフォールトルーチンがエンターされたと
きに、全3個のCPUは、前のリードの試みでメモリモジ
ュールからまさに受信したステイタス情報のプライベー
トライト動作を行う。次に、全3個のCPUは、他のCPUが
書き込んだものを読み出し、自分自身のメモリステイタ
ス情報と比較する。もしそれらが一致するならば、メモ
リモジュールは、オフラインでボートされる。もし一致
せず、1個のCPUがメモリモジュールに対して悪いステ
イタスを示し他のCPUが良好なステイタスを示すなら
ば、CPUはオフラインでボートされる。
〈フォールトトレラント電源〉 第22図を参照して、好ましい実施例のシステムは、上述
のCPUモジュール、メモリモジュール、I/Oプロセッサモ
ジュール、I/Oコントローラ、及びディスクモジュール
のオンラインでの交換と同様に、故障した電源モジュー
ルをオンラインと交換できるフォールトトレラントな電
源を使用できる。第22図の回路で、交流電力ライン160
は、電力分配ユニット161に直接に接続され、このユニ
ット161は、電力ラインのろ波器、過渡電流の抑圧器、
及び短絡に対して保護するためのサーキットブレーカを
提供する。交流電力ラインの故障に対して保護するため
に、冗長性のバッテリパック162と163が、順序正しいシ
ステムシャットダウンを完了しうるような4-1/2分の全
システム電力を与える。2個のバッテリパックの1個16
2又は163だけが、システムを安全にシャットダウンする
ために動作するのに必要である。
電力サブシステムは、2つの同一の交流から直流へのバ
ルク電源164と165を備え、これらの電源は、高電力ファ
クタを備え、1対の36ボルト直流分配バス166と167にエ
ネルギーを供給する。このシステムは、動作中である1
個のバルク電源164又は165を用いて、動作し続けること
が可能である。
4つの別々の電力分配バスがこれらのバス166と167に含
まれる。バルク電源164は、電力バス166-1と167-1を駆
動し、バルク電源165は、電力バス166-2と167-2を駆動
する。バッテリパック163は、バス166-3、167-3を駆動
し、バス166-1と167-2から再チャージされる。3個のCP
U11、12、13は、これらの4個の分配バスの異なった組
み合わせから駆動される。
これらの36Vバス166と167に結合された多数のDC−DCコ
ンバータ168が、CPUモジュール11、12及び13、メモリモ
ジュール26と27、及びI/Oコントローラ30を個々に電力
を供給するために使用される。バルク電源16と165は、
また、3個のシステムファン169と、バッテリパック162
と163のためのバッテリチャージャに電力を供給する。
各システム部品に対するこれらの別々のDC−DCコンバー
タを備えることにより、1個のコンバータの故障はシス
テムシャットダウンを生じず、その代わり、システム
は、上述した故障回復モードの1つで動作を続け、故障
した電源部品をシステム動作中に交換できる。
この電源システムを、スタンドバイとオフの機能を備え
た手動スイッチか、もしくは保守・診断電源の故障の場
合に電源オン状態を自動的にオフ状態とする保守・診断
プロセッサ170からのソフトウエア制御の下のいずれか
で、シャットダウンできる。
第23図は、本発明の他の実施例によるデータ処理システ
ムのブロック図である。そこに示されるように、データ
処理システムは、CPU-A、CPU-B及びCPU-Cを備え、これ
らのCPUは、それぞれ、メモリA、メモリB及びメモリ
CとCPU-メモリバスAA,CPU-メモリバスBB及びCPU-メモ
リバスCCを介して通信する。CPU-A、CPU-B及びCPU-C
は、それぞれ、バスAO,BO及びCOを通して出力インター
フェースOIにデータを通信し、また、それぞれ、バスI
A,IB及びICを通して入力インターフェースIIからデータ
を受け取る。CPU-A、CPU-B及びCPU-Cは、相互に、そし
て、出力インターフェース28と入力インターフェース40
へ同期バスABCを介して、通信する。出力インターフェ
ースOIは、CPU-A、CPU-B及びCPU-Cからボート回路Vへ
インターフェース‐ボートバスVBを介してデータを通信
する。ボート回路Vは、どのプロセッサからのデータが
I/OコントローラIOCに通信されるべきかを決定する。デ
ータは、I/OコントローラIOCと最後にI/O装置IODにそれ
ぞれボート‐コントローラバスVCとコントローラ‐装置
バスCDを介して通信される。データは、I/Oコントロー
ラIOCから入力インターフェースIIへインターフェース
‐コントローラバスICBを通して通信される。
第24図に示されるように、CPU-A、CPU-B及びCPU-Cは、
多数の命令を実行し、いくつかの命令は、これらのCPU
に関連したプロセッサイベントを有する。プロセッサイ
ベントは、プロセッサにてランするコードによって明白
に表現してまたは内在的に定義される。例えば、各マイ
クロプロセッサライト動作は、プロセッサイベントと考
えることができる。プロセッサイベントの他の可能性
は、データリード、データ転送、または、プロセッサに
おいて明白に表したコードによって発生される特定の信
号であってもよい。(第1図から第22図までの実施例で
は、「イベント」は、ランサイクル、すなわち、ストー
ルが実行中でないのでパイプラインが進むCPUのマシン
サイクルすなわちクロックサイクルである。)どの場合
でも、イベントは、各プロセッサで同じ順序で起こる。
しかし、イベントは、各プロセッサでは同時には起こら
ないかもしれない。例えば、1個のプロセッサは、他の
プロセッサで実行中のコードの訂正版を実行しているか
もしれず、この訂正されたコードは、イベントを異なっ
た時間に起こさせる追加の命令を含んでいるかもしれな
い。CPU-AとCPU-Bにおけるイベント‐4に注意せよ。同
一のコードを実行するプログラムにおいてさえもイベン
トが同時に起こらない他の理由は、予期しないエラーの
発生である。例えば、キャシュミスは、リードのリトラ
イまたはパリティエラーの検出を必要とし、この場合、
実行はエラールーチンに分岐するかもしれない。CPU-A
とCPU-Cによって見いだされるエラーに注意せよ。
この実施例によるシステムが複数のプロセッサイベント
に同じ順序で出会うので、プロセッサは、所定のイベン
トに各プロセッサを同期することによって同期できる。
各プロセッサをそのように同期することを可能にする構
造が第25図においてCPU-Aに対して図示される。CPU-Bと
CPU-Cは、同様に構成される。第25図に示されるよう
に、CPU-Aは、それ自身のクロック184からライン186を
介して受け取られるクロックパルスに基づいた命令を実
行するプロセッサ180を備える。プロセッサ180は、ライ
ン190に内部同期要求信号を、ライン191にクロック出力
信号を、ライン192に「追加の」クロック信号を、そし
て、ライン194にプロセッサイベント信号を発生する。
「追加の」クロックサイクルは、エラーリトライ、キャ
シュヒット速度の変化、非同期論理、または他の理由の
ために起こり得る。これらは、プログラムの実行中には
通常起こらないクロックサイクルを表す。プロセッサ18
0は、ライン196でウエイト信号を、そして、ライン198
で割り込み信号を受け取る。
CPU-Aは、さらに、クロックサイクルを計数するための
カウンタ200、プロセッサイベントを計数するためのイ
ベントカウンタ202、イベントカウンタ202の値をシステ
ムの中の他のイベントカウンタと比較するための比較回
路206及び、CPU-Aの同期を制御するための同期論理回路
210を含む。サイクルカウンタ200は、最後のプロセッサ
イベント以後に起こったクロックサイクルの数を計数す
るためにライン191に結合される。サイクルカウンタ200
は、追加のクロックサイクルが起こったときにクロック
サイクルの計数を禁止するためにインバータ214を通し
てライン192に結合される。この理由は、後で説明され
る。サイクルカウンタ200は、また、各プロセッサイベ
ントのときにリセットされるためにライン194に結合さ
れる。サイクルカウンタ200は、オーバーフローすると
きはいつでも、次にORゲート222に結合されるライン218
に割り込み信号を発生する。ORゲート222の出力は、ラ
イン198に結合される。ORゲート222が概念的なORゲート
であることが分かる。実際の割り込み処理は、周知の技
法を用いて行われる。
イベントカウンタ202は、プロセッサ180によって検出さ
れるイベントの計数のためにライン194に結合される。
サイクルカウンタ200を用いているので、イベントカウ
ンタ202は、オーバーフローするときはいつでも、ORゲ
ート222への割り込み信号をライン226に発生する。イベ
ントカウンタ202の値は、ライン228を介して比較回路20
6へ、そして、ライン230を介して同期バスABCへ通信さ
れる。比較回路206は、イベントカウンタ202によって計
数されたイベントの数をライン230を介して、そして、
システム内の他のプロセッサのためのイベントカウンタ
によって計数されたイベントの数を同期バスABCを介し
て受け取る。比較回路206は、ライン234を介して同期論
理回路210に信号を発生して、イベントカウンタ202から
の値とシステム内の他のイベントカウンタからの値との
間の関係を示す。
同期論理回路210は、ライン194に示されたイベントに応
答してライン196でウエイト信号を主張するか除くかに
よりプロセッサ180の作動を制御する。次に、全プロセ
ッサは同期され、同期論理回路210は、同期された外部
割り込み信号をライン238に発生する。
システムの作動は、第26A図−第26B図及び第27図を参照
して理解できる。
第26A図が図示する状況では、同期要求(すなわち外部
割り込み)がCPU-A,CPU-B及びCPU-Cによって受け取られ
たが、これらのCPUがコードの異なった部分を実行して
いる。この場合、CPU-Aは、イベント‐4が点250の時間
に示されるまでコードを実行する。イベント4が検出さ
れたとき、同期論理回路210は、CPU-Aをウエイトステー
トに入らせる。同様に、CPU-Bは、イベント‐5が点251
に検出されるまでランを続行し、そのときにCPU-Bはウ
エイトステートに入る。CPU-Cは、イベント‐6が点252
で検出されるまでラインを続行し、そのときにCPU-Cは
ウエイトステートに入る。CPU-Aによって計数されるイ
ベントの数がCPU-Cによって計数されるイベントの数よ
り少ないので、CPU-Aは、イベント‐5が点254で検出さ
れてCPU-Aが再びウエイトステートに入るまでに、点253
で命令実行を再び続行する。CPU-AがなおCPU-Cの後にあ
ることが確かめられるときは、イベント‐6が点256で
検出されてCPU-Aが再びウエイトステートに入るまで
に、命令実行が点255で再び続行される。CPU-Bは、同様
な処理シーケンスを経験する。すなわち、CPU-Bによっ
て計数されたイベントの数が3個のプロセッサのいずれ
かによって計数されたイベントの最大数より小さいこと
が確かめられたとき、CPU-Bは、次のイベントが点258で
検出されてCPU-Bがウエイトステートに入るまでに、命
令実行を点257で再び続行する、などである。CPU-Cは、
同期要求が受け取られる前に最も多いイベントを計数し
たので、CPU-A,CPU-B及びCPU-Cの各々のためのイベント
カウンタが等しくなるまでウエイトステートに留まる。
これが起こるとき、各プロセッサに関連する同期論理回
路210は、同期された外部割り込み信号をライン238に出
し、ライン196にウエイト信号を送り、各プロセッサの
ために実行が共通の点159で再び続けられる。
第26B図に示される処理シーケンスでは、CPU-A,CPU-B及
びCPU-Cがイベントカウンタのオーバーフローの結果と
して同期される。そこに示されるように、CPU-Aは、コ
ードを実行し、1つのイベントが点260で起こる。コー
ド実行は、CPU-Aのためのイベントカウンタが点261でオ
ーバーフローするまで再び続けられる。この点で、CPU-
A内のイベントカウンタ202は、ライン226に割り込み信
号を出力し、CPU-Aはウエイトステートに入る。イベン
トの同じシーケンスとイベントカウンタオーバーフロー
は、CPU-BとCPU-Cにおいてそれぞれ点262、263と点26
4、265で起こる。CPU-A,CPU-B及びCPU-Cの各々がウエイ
トステートにあることが確かめられたとき、各プロセッ
サに対する同期論理回路210は、ライン196から信号を除
き、コード実行が共通の点266で再び続行される。
第26C図は、同期がサイクルカウンタオーバーフローの
結果として起こる状況を示す。そこに示されるように、
CPU-Aはイベント‐7を点267で検出し、コード実行は、
そのサイクルカウンタ200が点268でオーバーフローをす
るまで2の(サイクルカウンタの値)乗のクロックサイ
クルの間続く。サイクルカウンタ200は、割り込み信号
をライン218に出し、CPU-Aはウエイトステートに入る。
同様に、CPU-Bは、イベント‐7を点269で検出し、その
サイクルカウンタが点270でオーバーフローをしてCPU-B
がウエイトステートに入るまでコード実行を続ける。最
後に、CPU-Cは、イベント‐7を点271で検出し、そのサ
イクルカウンタ200が点272でオーバーフローをしてCPU-
Cがウエイトステートに入るまでコード実行を続ける。
各プロセッサがウエイトステートにあることが確かめら
れたとき、同期論理回路210はライン196から信号を除
き、コード続行が共通の点273で再び続行される。
第27図は、CPU-A,CPU-B及びCPU-Cの各々のための処理シ
ーケンスを図示する。そこに示されるように、各プロセ
ッサは、ステップ310にて命令を実行するためにクロッ
クされる。もし現在のクロックサイクルが追加のクロッ
クサイクルであることがステップ304で確かめられるな
らば、サイクルカウンタ200は、ステップ308で禁止さ
れ、処理がステップ308で再び続けられる。もし現在の
クロックサイクルが追加のクロックサイクルでないこと
がステップ304で確かめられるならば、サイクルカウン
タ200は、ステップ312でインクリメントされる。次に、
ステップ316で、サイクルカウンタ200がオーバーフロー
したか否かが確かめられる。もしそうならば、サイクル
カウンタ200は、ステップ320でプロセッサを割り込み、
ステップ324で同期要求を発生する。サイクルカウンタ2
00によって発生される割り込みに対応して、プロセッサ
はステップ328でイベントを発生する。ここで、プロセ
ッサは、(ステップ324で発生された同期要求信号の結
果として)ステップ332でウエイトステートに入る。
サイクルカウンタオーバーフローの場合、全プロセッサ
は、最後のプロセッサイベントの後で正確に2の(サイ
クルカウンタの値)乗のクロックサイクル経って割り込
みコードでのプロセッサイベントに達する。プロセッサ
は、サイクルカウンタがオーバーフローする前に2の
(サイクルカウンタの値)乗のクロックサイクルの間に
追加のクロックサイクルが起こらない限り、同期状態に
ある。もし追加のクロックが起こるならば、全プロセッ
サは異なった点で止まり、恐らくミスマッチを生じる。
そして、プロセッサは、割り込みに対し異なって対応す
ることがあり得て、こうしてプロセッサエラーまたはシ
ステムエラーを生じる。これが、各サイクルカウンタが
すべての追加のクロックサイクルでディスエーブルにさ
れる理由である。
もしステップ316でサイクルカウンタ200がオーバーフロ
ーしないことが確かめられるならば、次に、ステップ34
0で、イベントが起こったか否かが確かめられる。もし
否であれば、処理はステップ300で再び続けられる。も
しイベントが起こっていたなら、イベントカウンタ202
はステップ344でインクリメントされる。次に、ステッ
プ348で、イベントカウンタ202がオーバーフローしたか
否かが確かめられる。もしそうならば、プロセッサはス
テップ320で割り込みされ、プロセッサがステップ332で
休止(halt)されるまでサイクルカウンタオーバーフロ
ーを伴って処理が続けられる。もしステップ348でイベ
ントカウンタ202がオーバーフローしていないことが確
かめられるならば、次に、ステップ352で、同期要求が
そのままであるか否かが確かめられる。もしそうなら
ば、プロセッサは、ステップ332で休止され、そうでな
ければ、コード実行がステップ300で続けられる。
もしプロセッサがステップ332で停止された後で、次に
ステップ360で、全プロセッサが停止したか否かが確か
められる。もしこうでなければ、次にステップ364で、
プロセッサ同期のために許された時間の最大値が越えら
れたか否かが確かめられる。例えば、これはプロセッサ
の誤りの場合に起こる。もし最大値が越えられたなら
ば、プロセッサがボートされ、すなわち、ステップ372
で、比較プロセスから無視される。いずれにしても、ス
テップ360でプロセッサを適当に機能させる間、比較が
続く。全プロセッサが停止すると、カウンタはステップ
372で比較される。もしあるプロセッサのカウンタが他
のプロセッサより大きいことが確かめられるならば、よ
り大きい計数をもつカウンタがウエイトステートに留ま
り、処理は、ステップ360で続く。他方、もしあるプロ
セッサのカウンタの値が最大計数値より小さいならば、
処理は、ステップ300に戻り、そこで、次のイベントが
検出されるまで処理が再び続けられ、プロセッサは停止
し、カウンタは再び比較される。もしステップ372で全
カウンタが等しいことが確かめられるならば、ウエイト
信号が各プロセッサから除かれ、全プロセッサは、同期
要求を出すためにステップ376で再びスタートされる。
上に説明したことは第23図から第27図までの実施例の完
全な説明であるが、様々な変形が使用できる。例えば、
同期論理回路210は、各チップに結合された単独の回路
に統合でき、システムは、任意の数のプロセッサを使用
できる。
第23図から第27図までの実施例は、多数のプロセッサを
同期するための方法と装置を示す。各プロセッサは、そ
れ自身のクロックを走らせ、1つのラインで所定のプロ
セスまたはイベントの発生を示し、プロセスウエイトス
テートを開始するための他のラインで信号を受ける。各
プロセッサは、プロセッサが同期された最後の時間以後
に示されたプロセッサイベントの数を計数するカウンタ
を備える。同期を要求するイベントがプロセッサに関連
する同期論理回路によって検出されたとき、同期論理回
路は、次のプロセッサイベントの後でウエイト信号を発
生する。各プロセッサに関連する比較回路は、システム
内の他のイベントカウンタをテストし、その関連するプ
ロセッサが他のプロセッサに遅れているか否かを決定す
る。もしそうならば、同期論理回路は、次のプロセッサ
イベントまでウエイト信号を除く。プロセッサは、その
イベントカウンタが最速のプロセッサのイベントカウン
タに一致するときに最終的に停止する。そのとき、全プ
ロセッサは、同期され、イベントを出すために再びスタ
ートできる。もしイベントカウンタがその最大値に達す
る前に同期イベントが起こらず、イベントカウンタのオ
ーバーフローが再同期を強行するならば、サイクルカウ
ンタは、最後のプロセッサイベント以後のクロックサイ
クルの数を計数するために備えられる。このサイクルカ
ウンタは、最大の割り込み潜在時間が越えられる前の1
点でオーバーフローをするようにセットされ、再同期を
強行する。
本発明の追加の実施例は、第28図に示される。ここで、
フォールトトレラントなコンピュータシステムは、2個
以上の同一のCPUモジュール、CPU-AとCPU-B,を備えて示
される。各CPUは、それ自身のメモリ16を備え、それ自
身のクロック発振器17に接続される。これらのプロセッ
サは、プロセッサドリフトをある限界以下に保つ任意の
同期メカニズムが使用できるけれども、カウンタ回路を
用いて、本発明者の前の米国出願第118,503号の特徴に
よりバス18を介して緩く同期される。
第28図で、各プロセッサCPU-AとCPU-Bは、バス21または
22を介してデータ入力・出力モジュール14と15に結合さ
れる。プロセッサからの出力データは、これらのモジュ
ール14と15においてボート回路100によってボートされ
る。FIFOタイプの出力バッファ50が、出て行く(outbou
nd)データを順序づけるために各プロセッサにおいて使
用できる。この説明では、メモリ16はCPUモジュール内
にあるので、この出ていくデータは、I/O出力データで
ある。こうして、出ていくデータは、CPU-A内のバッフ
ァ50の出力からバス21aを介してモジュール14のボート
回路100へ、そしてバス21bを介してモジュール15のボー
ト回路100へ結合される。同様に、出ていくデータは、C
PU-Bからバス22aと22bによってモジュール14と15内のボ
ート回路100に結合される。各CPUに入ってくるデータ
は、バス21内のバス21cと21dに、または、バス22内のバ
ス22cと22dにある。入ってくるデータがボートされない
ことに注意せよ。
3個以上のCPUモジュールの場合、第28図のボート回路2
8は、全CPUからの出力データの多数決をとる。2個のプ
ロセッサの場合、ボート回路は、2個の出力の違いを検
出し、もし同一ならば、ボート回路はI/Oバス24と25を
通して同一のデータの複製を通す。ボート回路は、ボー
トが行われる前に全CPUがバス21または22にデータ出力
を出すまで、待つ。もし同じコードを実行するならば、
そして緩い同期メカニズムの限界内で、全プロセッサ
は、同じデータを同じ順序で(すべてのフォールトでな
いプロセッサから)送る。1組だけのボート回路100が
必要であることに注意せよ。もしプロセッサが誤動作し
てそのメモリ16の不正確なデータを書き始めるならば、
その誤動作は重要であり、その悪いデータが外部(I/O
バスのディスプレイ、キーボード、プリンタ、コプロセ
ッサなど)に送られる場合のみ、すなわち、もし誤動作
がプロセッサに他のプロセッサとの同期から外れさせる
ならば、誤動作は検出される。
第28図の実施例において、I/Oバスからの入ってくるデ
ータは、バス24と25からバッファ21eと21fを通して入力
バス21eと21に、また同様にバッファ22eと22fを通して
入力バス22と22dに結合される。入ってくるI/Oにおい
て、データは、これらの全バッファにロードされ、全CP
Uは、非同期にこれらのバッファをロードしない。これ
らのバッファは、1つのバイト、ワードまたはパケット
をバッファできる。あるいは、これらのバッファは、多
くのデータアイテムを保持し、同時のロードと使用とを
可能にするFIFOまたは環状バッファであってもよい。も
っとも単純な場合、各バッファ21e,21f,22e及び22fは、
エンプティ/フルフラグを有する1つのデータレジスタ
のみである。それで、新しいデータは、全プロセッサが
エンプティを信号するまで(または時間ぎれが起こるま
で)I/Oバス24と25からロードされない。多重のI/Oバス
は、1つのバッファを共用しても良く、独立のバッファ
を備えてもよい。
さらに故障に対して安全にするために、第28図のI/Oバ
スは、好ましくは、データをメモリにロードする前に各
CPUが不正確なデータを検出できるためのパリティチェ
ックまたはコードチェックを備える。さもなければ、悪
いI/Oバスが全プロセッサの記憶を壊させるようにな
る。
こうして、第28図の実施例は、フォールトトレラントな
コンピュータシステムが同じ命令ストリームを実行する
多重の同一のCPU(それ自身の独立したメモリを備え
る)を使用することを示す。この多重のCPUは、作動サ
イクルのようなイベントを計数し他のCPUの前にあるCPU
をストールすることにより、緩く同期される。別々のバ
スを介したデータ出力参照は、全CPUが同じ参照をした
ときを検出するボート回路によって各CPUの別々のポー
トでボートされ、そのときにのみ外部のI/Oバスに同一
の参照を通す。このポートは、全CPUが全FIFOを異なっ
た時間にロードするように取り扱いされる全非同期CPU
から出力参照を可能にするFIFOバッファを含んでいても
よい。全I/Oバスから全CPUへの入力データはボートされ
ないが、全CPUがその固有のクロック速度で入力データ
を受け取ることができるようにバッファされる。
本発明は、特別な実施例を参照して説明されたが、この
説明は、制限的な意味でなされたのではない。開示され
た実施例の様々な変形が、本発明の他の実施例と同様
に、この説明を参照して当業者に明らかである。従っ
て、添付した特許請求の範囲は、本発明の範囲内で実施
例の任意のそのような変更を含む。
【図面の簡単な説明】
第1図は、本発明の1実施例によるコンピュータシステ
ムの電気回路のブロック図である。 第2図は、第1図のCPUの電気回路のブロック図であ
る。 第3図は、第2図のCPUに使用されるマイクロプロセッ
サチップの電気回路のブロック図である。 第4図と第5図は、それぞれ、第2図と第3図のCPUに
おいて生じるイベントを時間の関数として示すタイミン
グ図である。 第6図は、第1図のコンピュータシステムにおける1個
のメモリモジュールの電気回路のブロック図である。 第7図は、第1図のシステムにおけるメモリバスに対し
CPUにおこるイベントを示すタイミング図である。 第8図は、第1図のコンピュータシステムでの1個のI/
Oプロセッサの電気回路のブロック図である。 第9図は、第1図のシステムでのメモリモジュールとI/
Oプロセッサの間の転送プロトコルのためのイベントを
示すタイミング図である。 第10図は、第1図から第3図までのCPUにおける命令の
実行のためのイベントを示すタイミング図である。 第10a図は、第10図の図の一部の詳細図である。 第11図と第12図は、それぞれ、第1図から第3図までの
CPUにおける命令の実行のためのイベントを示す第10図
と同様なタイミング図である。 第13図は、第2図のCPUにおいて用いられる割り込み同
期回路の電気回路のブロック図である。 第14図、第15図、第16図及び第17図は、それぞれ、第1
図から第3図までのCPUでの命令の実行のためのイベン
トを示す第10図または第11図と同様なタイミング図であ
り、様々な場面を説明する。 第18図は、第1図、第2図、第3図及び第6図のシステ
ムにおいて使用されるメモリの物理的メモリマップ図で
ある。 第19図は、第1図、第2図、第3図及び第6図のシステ
ムにおいて使用されるメモリの仮想的メモリマップ図で
ある。 第20図は、第2図または第3図によるCPUにおけるマイ
クロプロセッサチップにおける仮想アドレスとTLBエン
トリのフォーマットの図である。 第21図は、第1図、第2図、第3図及び第6図のシステ
ムにおいて使用されるグローバルメモリモジュールのメ
モリマップにおける専用メモリの位置の説明図である。 第22図は、本発明の1実施例によるシステムで使用され
るフォールトトレラントな電源の回路図である。 第23図は、本発明の実施例の他の例によるデータ処理シ
ステムの1実施例の概念的ブロック図である。 第24図は、第23図に図示されたデータ処理システムの処
理シーケンスの図である。 第25図は、第23図に図示されたCPUの1実施例の概念的
ブロック図である。 第26A図から第26C図は、第23図の実施例による処理過程
を同期するプロセッサを図示する図である。 第27図は、第23図の実施例によるプロセッサ同期を図示
するフローチャートである。 第28図は、本発明の他の実施例によるシステムの(第1
図のような)回路図である。 11,12,13…プロセッサ(CPU)、14,15…メモリモジュー
ル、16…ローカルメモリ、17…クロック発振器、21,22,
23…バス、24,25…入出力バス、26,27…入出力プロセッ
サ、28…バス、29…バスインターフェースモジュール、
30…I/Oコントローラ、31…ラジアルライン、32…シス
テムステータスバス、33…肯定応答/ステータスバス、
30…マイクロプロセッサチップ、41,42,43…ローカルバ
ス、44,45…キャッシュメモリ、46…浮動小数点コプロ
セッサ、50…ライトバッファ、51…リードバッファ、52
…ライトバッファバイパス、53…データバス、54…アド
レスバス、55…制御バス、56…バスインターフェース、
57…多重アドレス/データバス、58…コマンドライン、
60…メモリコントローラ、61…ローカルレジスタ、62…
不揮発性メモリ、65…割り込み回路、71…サイクルカウ
ンタ、72…リフレッシュカウンタ、73…カウンタ、74…
DMA回路、76…レジスタ、77…ALU、78…シフタ、81…プ
ロセッサバス構造、82…命令デコーダ、83…トランスレ
ーションルックアサイドバッファ(TLB)、84…仮想ア
ドレスバス、87…パイプライン及びバス制御回路、91,9
2,93…入力/出力ポート、94,95,96…レジスタ、100…
ボート回路、101…データバス、102…アドレスバス、10
3…コマンドバス、104…DRAM、105…メモリコントロー
ラ、106…制御・ステータスレジスタ、107…不揮発性RA
M、108…ライトプロテクト、109…バスインターフェー
ス、110…アービトレータ回路、114…リードレジスタ、
117…コントローラ、118…リフレッシュカウンタ、119
…割り込みボート回路、121,122…ポート、123…双方向
多重アドレス/データバス、124…双方向コマンドバ
ス、126…ステートマシン、127,128…ラッチ、130…内
部ステータス・制御レジスタ、131…バスインターフェ
ース、132…マルチプレクサ、133…制御・データ転送レ
ジスタ、135…割り込み分配器、136…割り込みボータ、
138…保持レジスタ、141…ローカルメモリエリア、142
…グローバルメモリエリア、143…カーネルエリア、144
…カーネルデータエリア、145…ユーザプログラムペー
ジエリア、146…ユーザページエリア、147…ディスクバ
ッファエリア、149…I/Oステージングエリア、160…交
流電力ライン、161…電力分配ユニット、162,163…バッ
テリパック、164,165…バルク電源、166,167…DC分配バ
ス、168…DC−DCコンバータ、169…システムファン、17
0…保守・診断プロセッサ、II…入力インターフェー
ス、OI…出力インターフェース、V…ボート回路、IOC
…I/Oコントローラ、IOD…I/O装置、21e,21f…バッフ
ァ。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 リチャード・エー・サウスワース アメリカ合衆国 78750 テキサス、オー スチン、ブランディーワイン・サークル 10008番 (72)発明者 ケニス・シー・ディベッカー アメリカ合衆国 78717 テキサス、オー スチン、モノナ・コウブ 15702番 (72)発明者 ニキール・エー・メータ アメリカ合衆国 78758 テキサス、オー スチン、プライリエ・ヘン・コウブ 1715 番 (72)発明者 ジョン・デイビッド・アリソン アメリカ合衆国 78703 テキサス、オー スチン、ウィンザー・ロード 1406番、 202号 (72)発明者 ロバート・ダブリュー・ホースト アメリカ合衆国 61821 イリノイ、シャ ンペイン、ローブソン・パーク・ドライブ 2804番 (56)参考文献 特開 昭52−60540(JP,A) 特公 昭52−24825(JP,B2) 米国特許4644498(US,A)

Claims (42)

    【特許請求の範囲】
  1. 【請求項1】(a)命令ストリームを実行する複数のCP
    Uであって、全CPUが相互に独立にクロックされて各CPU
    のために別々のマシンサイクルを与えていて、このマシ
    ンサイクルが、上記の命令ストリームが実行される実行
    サイクルと、上記の命令ストリームが実行されないスト
    ールサイクルとを含み、各CPUがメモリ要求入力/出力
    ポートを備える複数のCPUと、 (b)上記の全CPUの全入力/出力ポートに結合され、
    上記の全CPUから同じ要求を受け取った後でのみメモリ
    要求を実施し、メモリ要求を実施するときにのみ全CPU
    に肯定応答信号を送る共通メモリであって、上記の全CP
    Uの各々は、上記の肯定応答信号によって信号されたと
    きにこの共通メモリによってメモリ要求の実施を待つ間
    にストールサイクルを実行する、共通メモリと、 (c)全CPUの各々に備えられ、実行サイクルを計数す
    るがストールサイクルを計数しないカウンタと、 (d)上記の全CPUに結合され、外部の割り込み要求に
    応答する割り込み回路であって、上記の全CPUの上記の
    全カウンタに結合され、他のCPUが命令を実行し続ける
    間に同じ実行サイクルで各CPUに別々に割り込みをする
    ために上記の全カウンタの各々において選択された計数
    に応答する割り込み回路とを備えた多重CPUシステム。
  2. 【請求項2】請求項1に記載されたシステムにおいて、 上記の全CPUの各々が他のCPUによってアスセス可能でな
    いローカルメモリを備える多重CPUシステム。
  3. 【請求項3】請求項1に記載されたシステムにおいて、 上記のCPUが全3個であって、上記のポートを介して上
    記の共通メモリへの上記の要求が上記の共通メモリによ
    ってボートされる多重CPUシステム。
  4. 【請求項4】請求項1に記載されたシステムにおいて、 上記の割り込み回路が上記のカウンタによって記憶され
    た選択された値でのみ上記の全CPUに割り込みをする多
    重CPUシステム。
  5. 【請求項5】請求項1に記載されたシステムにおいて、 上記の割り込み回路が、各CPUに対して、選択された値
    がその他の各CPUの上記のカウンタにおいて記憶されて
    いるときに割り込み要求の受信の信号に応答する手段を
    含む多重CPUシステム。
  6. 【請求項6】(a)命令ストリームを独立に実行する複
    数のCPUであって、全CPUが相互に独立にクロックされて
    各CPUのために別々のマシンサイクルを与えていて、こ
    のマシンサイクルが、上記の命令ストリームが実行され
    る実行サイクルと、上記の命令ストリームが実行されな
    いストールサイクルとを含む複数のCPUと、 (b)全CPUの各々に備えられ、実行サイクルを計数す
    るがストールサイクルを計数しないカウンタと、 (c)上記の全CPUに結合され、外部の割り込み要求に
    応答する割り込み回路であって、上記の全CPUの上記の
    全カウンタに結合され、上記の命令ストールの同じ実行
    サイクルで各CPUに別々に割り込みをするために上記の
    全カウンタの各々において選択された計数に応答する割
    り込み回路とを備えた多重CPUシステム。
  7. 【請求項7】請求項6に記載されたシステムにおいて、 上記のCPUが3個であって、全3個のCPUが共通メモリモ
    ジュールにアクセスし、上記の全CPUからの上記の共通
    メモリへの要求が上記のメモリモジュールによってボー
    トされる多重CPUシステム。
  8. 【請求項8】請求項6に記載されたシステムにおいて、 上記の全CPUの各々が他のCPUによってアクセス可能でな
    いローカルメモリを備える多重CPUシステム。
  9. 【請求項9】請求項7に記載されたシステムにおいて、 上記のCPUが全3個であって、この3個のCPUによってア
    クセスされる共通メモリを備え、全CPUによるこの共通
    メモリへのアクセスがこの共通メモリによってボートさ
    れる多重CPUシステム。
  10. 【請求項10】(a)複数のCPUであって、このCPUの各
    々が同じ命令ストリームを独立に実行し、全CPUが実行
    サイクルを与えるために相互に独立にクロックされ、全
    CPUは各々入力/出力ポートを備え、少なくとも1個の
    共用される入力/出力装置が上記の複数のCPUの上記の
    入力/出力ポートに結合される複数のCPUと、 (b)上記の全CPUの各々に備えられ、実行サイクルを
    計数するモジューロNカウンタと、 (c)上記の全CPUの各々に結合され、外部割り込み要
    求に応答し、上記の全カウンタの各々のあらかじめセッ
    トした値で各CPUに別々に割り込みをするために上記の
    全カウンタと関連づけられる割り込み回路とを備え、各
    CPUが上記の命令ストリームの同じ実行サイクルで割り
    込みをされる多重CPUシステム。
  11. 【請求項11】請求項10に記載されたシステムにおい
    て、 全3個のCPUが共通メモリモジュールをアクセスし、上
    記の全CPUから上記の共通メモリへの要求が上記のメモ
    リモジュールによってボートされる多重CPUシステム。
  12. 【請求項12】請求項10に記載されたシステムにおい
    て、 上記の共有された入力/出力装置が共通メモリである多
    重CPUシステム。
  13. 【請求項13】請求項10に記載されたシステムにおい
    て、 上記の割り込み回路が、選択された値が上記の各CPUに
    対するカウンタによって記憶されるときに、上記の全CP
    Uの中のより早いCPUによる命令の実行をストールするこ
    となく、上記のCPUの各々に割り込みをする多重CPUシス
    テム。
  14. 【請求項14】請求項10に記載されたシステムにおい
    て、 上記の割り込み回路が、各CPUに対して、選択された値
    がその他の各CPUの上記のカウンタにおいて記憶されて
    いるときに割り込み要求の受信の信号に応答する手段を
    含む多重CPUシステム。
  15. 【請求項15】請求項10に記載されたシステムにおい
    て、 上記のCPUの各々が他のCPUによってアクセス可能でない
    ローカルメモリを備える多重CPUシステム。
  16. 【請求項16】複数のプロセッサの各々において、該プ
    ロセッサ内でのイベントの発生の指示を作る手段であっ
    て、このイベントは該プロセッサにおいてパイプライン
    が進むマシンサイクルに対応しているイベント検出手段
    と、 上記のプロセッサの各々についてイベントの数を計数す
    るために上記の指示に応答するイベント計数手段と、 上記のイベント計数手段に応答して、全プロセッサの1
    個について計数されたイベントの数が他のプロセッサに
    ついて計数されたイベントの数より大きいならば、全プ
    ロセッサの各々の処理を変える手段と を備えた複数のプロセッサの同期装置。
  17. 【請求項17】請求項16に記載された装置において、上
    記のイベント計数手段がサイクルカウンタである、複数
    のプロセッサの同期装置。
  18. 【請求項18】請求項16に記載された装置において、 同期要求信号を受け取る同期要求手段と、 1個のプロセッサについて計数されたイベントの数が他
    のプロセッサについて計数されたイベントの数より少な
    くない時に、同期要求信号に応答して前者のプロセッサ
    の処理の停止をする停止手段とを含む、複数のプロセッ
    サの同期装置。
  19. 【請求項19】請求項18に記載された装置において、上
    記の同期要求信号が割り込みである、複数のプロセッサ
    の同期装置。
  20. 【請求項20】請求項16に記載された装置において、各
    プロセッサについて計数されたイベントの数が等しいと
    き、停止されたプロセッサを再びスタートする手段を含
    む、複数のプロセッサの同期装置。
  21. 【請求項21】請求項17に記載された装置において、 1個のプロセッサについて計数されたイベントの数が、
    停止された或るプロセッサについて計数されたイベント
    の数より少なくない時に、前者のプロセッサの処理の停
    止をする停止手段を備えた、複数のプロセッサの同期装
    置。
  22. 【請求項22】所定のイベントの発生の数を計数するた
    めにプロセッサに結合された手段であって、該所定のイ
    ベントは命令が実行されているプロセッサのクロックサ
    イクルであり、かつ、このクロックサイクルはそのプロ
    セッサのパイプラインが進むクロックサイクルである、
    イベント計数手段と、 各プロセッサ毎の上記イベント計数手段についての信号
    を受け取るために結合された比較手段と、 同期要求入力信号を受け取るべく接続されており、かつ
    上記イベント計数手段に接続されると共に上記比較手段
    に応答し、各プロセッサに対して計数されたイベントの
    数が他のプロセッサについて計数されたイベントの数に
    等しくなるまで同期要求入力信号に応答してプロセッサ
    の処理を停止するための同期手段とを、 各プロセッサに対して備えた、複数のプロセッサの同期
    装置。
  23. 【請求項23】請求項22に記載された装置において、同
    期要求入力信号が割り込みであり、イベント計数手段が
    サイクルカウンタである、複数のプロセッサの同期装
    置。
  24. 【請求項24】(a)それぞれ同じ命令ストリームを実
    行する多重プロセッサであって、各プロセッサが独立の
    クロックを備え、そして、各プロセッサが他のプロセッ
    サに独立のメモリを備える多重プロセッサと、 (b)多数のボート回路であって、各ボート回路が、各
    プロセッサから出力データを別々に受け取り、多重プロ
    セッサが同じデータ出力を送ったときにのみ入力/出力
    手段にボート出力を作る多数のボート回路とを備えるフ
    ォールトトレラントなコンピュータシステム。
  25. 【請求項25】請求項24に記載されたシステムにおい
    て、 上記の全プロセッサが、全プロセッサの作動サイクルを
    計数し、他のプロセッサの前にあるプロセッサをストー
    ルすることにより緩く同期されるフォールトトレラント
    なコンピュータシステム。
  26. 【請求項26】請求項24に記載されたシステムにおい
    て、 上記の各入力/出力手段を上記の各プロセッサに結合す
    る入力バッファを含み、プロセッサがこの入力バッファ
    から非同期にデータを受け取るフォールトトレラントな
    コンピュータシステム。
  27. 【請求項27】請求項24に記載されたシステムにおい
    て、 各プロセッサからの上記の出力データが、上記の全プロ
    セッサが出力データをその出力バッファにロードするま
    で、出力バッファに保持され、この出力バッファがFIFO
    であるフォールトトレラントなコンピュータシステム。
  28. 【請求項28】(a)それぞれ同じ命令ストリームを実
    行する多重プロセッサであって、各プロセッサが独立の
    クロックを備え、各プロセッサが他のプロセッサと独立
    のメモリを備え、このメモリにおいて、上記のプロセッ
    サの各々から出力される外行きのデータである各プロセ
    ッサの出力データが各プロセッサのための別の出力格納
    バッファに保持される多重プロセッサと、 (b)各ボート回路が、各プロセッサの上記の出力格納
    バッファから出力データを別々に受け取り、多重プロセ
    ッサが同じデータ出力を送ったときにのみ入力/出力手
    段にボート出力を作る複数のボート回路であって、上記
    の作られたボート出力が上記の保持された出力と同一の
    複製であり、上記のボート回路の少なくとも1つが上記
    の外行きの出力を出すプロセッサの全てからの同一の外
    行きプロセッサデータを検出したときに、上記の外行き
    プロセッサデータの複製が上記のプロセッサから上記の
    入力/出力手段に通される複数のボート回路とを備える
    フォールトトレラントなコンピュータシステム。
  29. 【請求項29】(a)多重プロセッサの各々を相互に独
    立にクロックするステップと、 (b)各プロセッサにおいて同じ命令ストリームを実行
    するステップと、 (c)各プロセッサについてのデータを他のプロセッサ
    によってアクセス可能でない別のメモリに格納するステ
    ップと、 (d)各プロセッサの出力ポートに出力データを出すス
    テップと、 (e)ボート回路における上記の全ポートにおける出力
    データを検出し、そして、多重プロセッサから入力/出
    力手段への同じデータである出力データを通すために上
    記の出力データをボートするステップとを備えた多重プ
    ロセッサシステム作動法。
  30. 【請求項30】請求項29に記載された方法において、 上記のポートの各々でバッファ内の上記の出力データを
    格納するステップを含み、上記の各バッファがFIFOであ
    る多重プロセッサシステム作動法。
  31. 【請求項31】請求項30に記載された方法において、 全プロセッサの作動のサイクルを計数し他のプロセッサ
    の前にあるプロセッサをストールすることにより上記の
    全プロセッサを緩く同期するステップを含む多重プロセ
    ッサシステム作動法。
  32. 【請求項32】(a)多重プロセッサの各々(それぞれ
    クロックサイクルが異なっていてもよい)に相互に独立
    にクロック信号を供給するステップと、 (b)上記のクロック信号の供給の下で、各プロセッサ
    において同じ命令ストリームを実行するステップと、 (c)上記の命令ストリームの実行において、他のプロ
    セッサによってアクセス可能でない別のメモリを各プロ
    セッサによってアクセスするステップと、 (d)上記の命令ストリームの実行において、 出力格納バッファにそして出力格納バッファから格プロ
    セッサの出力ポートに別々に、各プロセッサから出力さ
    れた外行きプロセッサデータである出力データを出すス
    テップと、 (e)ボート回路の上記の全ポートにおける出力データ
    を検出し、そして、多重プロセッサから入力/出力手段
    への同じデータである出力データを通すために上記の出
    力データをボートするステップとを備え、上記の通され
    た出力データが上記の出された出力データの同一の複製
    であり、上記のボート回路が全ての上記の出力データを
    出すプロセッサから同一の外行きのプロセッサデータを
    検出するときに、上記の外行きのプロセッサデータの複
    製が上記の出力データを出すプロセッサから上記の入力
    /出力手段に通される多重プロセッサシステム作動法。
  33. 【請求項33】(a)少なくとも第1と第2のプロセッ
    サにおいて同じ命令ストリームを実行するステップと、 (b)上記の第1と第2のプロセッサの各々においてリ
    モートアクセス(このリモートアクセスは、別々の第1
    と第2のアクセスポートに向けられる)を発生するステ
    ップと、 (c)上記の第1と第2のアクセスポートにおいて上記
    のリモートアクセスの各々を検出し、上記の第1と第2
    のアクセスポートの両方においてリモートアクセスが検
    出されるまで待って、次に上記のリモートアクセスをボ
    ートし、もし両者が同じであれば上記のリモートアクセ
    スを通すステップとを備えたコンピュータシステム作動
    法。
  34. 【請求項34】請求項33に記載された方法において、 上記の実行するステップが、独立にクロックされるプロ
    セッサ内にあり、上記の第1と第2のプロセッサでリモ
    ートアクセスを発生する上記のステップが、各プロセッ
    サに対するバッファに上記のリモートアクセスを一時的
    に格納することを含むコンピュータシステム作動法。
  35. 【請求項35】請求項33に記載された方法において、 上記の第1と第2のアクセスポートが、上記の第1と第
    2のプロセッサに非同期に作動される第1と第2のモジ
    ュール内にあり、上記の第1と第2のプロセッサが、作
    動サイクルを計数し他のプロセッサの前にあるプロセッ
    サをストールすることにより緩く同期され、1個ののプ
    ロセッサのみによってアクセス可能な別々のメモリの上
    記の第1と第2のプロセッサについてのデータを格納す
    るステップを含むコンピュータシステム作動法。
  36. 【請求項36】(a)少なくとも第1と第2のプロセッ
    サにおいて同じ命令ストリームを実行するステップ(こ
    の第1と第2のプロセッサは、独立にクロック信号を供
    給され、上記の命令ストリームの実行は異なった速度で
    なされてもよい)と、 (b)上記の命令ストリームの実行において、上記の第
    1と第2のプロセッサの各々においてリモートアクセス
    (このリモートアクセスは、別々の第1と第2のアクセ
    スポートに向けられ、上記のプロセッサの各々から出さ
    れる外行きのプロセッサデータである)を発生し、各プ
    ロセッサにおいて別の格納バッファに上記のリモートア
    クセスを一時的に格納するステップと、 (c)上記の第1と第2のアクセスポートにおいて上記
    のリモートアクセスの各々を検出し、上記の第1と第2
    のアクセスポートの両方においてリモートアクセスが検
    出されるまで待って、次に上記のリモートアクセスをボ
    ートし、もし両者が同じであれば上記のリモートアクセ
    スを通すステップとを備え、この通されたリモートアク
    セスが上記の発生されたリモートアクセスと同一の複製
    であり、全ての上記の外行きプロセッサデータを出すプ
    ロセッサから同一の外行きのプロセッサデータを検出す
    る間に、上記の外行きのプロセッサデータの複製が上記
    の外行きプロセッサデータを出すプロセッサから通され
    るコンピュータシステム作動法。
  37. 【請求項37】(a)同じ命令ストリームを実行する第
    1と第2のプロセッサと、 (b)上記の第1と第2のプロセッサの各々にリモート
    アクセス(このリモートアクセスは、別々の第1と第2
    のアクセスポートに向けられる)を発生する手段と、 (c)上記の第1と第2のアクセスポートで上記のリモ
    ートアクセスの各々を検出する別々のボート手段であっ
    て、上記のリモートアクセスをボートする前にリモート
    アクセスが第1と第2のアクセスポートの両方で検出さ
    れるまで待ち、もし両者が同じであるならば上記のリモ
    ートアクセスを通すボート手段とを備えるコンピュータ
    システム。
  38. 【請求項38】請求項37に記載されたシステムにおい
    て、 上記のプロセッサが独立にクロックされ、上記のリモー
    トアクセスを一時的に格納できる各プロセッサにおいて
    対するバッファを含むコンピュータシステム。
  39. 【請求項39】請求項37に記載されたシステムにおい
    て、 上記の第1と第2のアクセスポートが、上記の第1と第
    2のプロセッサに非同期に作動される第1と第2のモジ
    ュール内にあるコンピュータシステム。
  40. 【請求項40】請求項37に記載されたシステムにおい
    て、 上記の第1と第2のプロセッサの各1個のための別々の
    メモリ手段を含み、各メモリ手段は1個のプロセッサに
    よってのみアクセス可能なコンピュータシステム。
  41. 【請求項41】(a)同じ命令ストリームを実行する第
    1と第2のプロセッサ(この第1と第2のプロセッサ
    は、独立にクロック信号を供給され、上記の命令ストリ
    ームの実行は異なった速度でなされてもよい)と、 (b)上記の第1と第2のプロセッサの各々にリモート
    アクセス(このリモートアクセスは、別々の第1と第2
    のアクセスポートに向けられる)を発生する第1と第2
    の格納バッファを備え、この格納バッファは上記のリモ
    ートアクセスを一時的に格納し、上記のリモートアクセ
    スが上記の各プロセッサから出された外行きのプロセッ
    サデータである手段と、 (c)上記の第1と第2のアクセスポートで上記のリモ
    ートアクセスの各々を検出する別々のボート手段であっ
    て、上記のリモートアクセスをボートする前にリモート
    アクセスが第1と第2のアクセスポートの両方で検出さ
    れるまで待ち、もし両者が同じであるならば上記のリモ
    ートアクセスを通すボート手段とを備え、上記の通され
    たリモートアクセスが上記の発生されたリモートアクセ
    スの複製と同一であり、全ての上記の外行きプロセッサ
    データを出すプロセッサから同一の外行きのプロセッサ
    データを検出する間に、上記の外行きのプロセッサデー
    タの複製が上記の外行きプロセッサデータを出すプロセ
    ッサから通されるコンピュータシステム。
  42. 【請求項42】(a)多重プロセッサの各々が異なった
    速度で命令を実行可能な、各プロセッサに結合された独
    立なクロック手段と、 (b)上記の各プロセッサに結合され命令を格納するメ
    モリ手段であって、各プロセッサによる実行のために実
    質的に同じ命令ストリームを格納するメモリ手段と、 (c)各プロセッサから出された外行きのプロセッサデ
    ータである出力データを各プロセッサが格納するための
    別のFIFOバッファ手段と、 (d)各プロセッサからの出力データを比較するために
    全ての上記のプロセッサの上記のFIFOバッファ手段の各
    々からデータを受け取るように結合されたボート手段で
    あって、全プロセッサが上記の別のFIFOバッファ手段か
    ら同じ出力データを作ったときにボート出力を作る ボート手段と、 (e)上記のボート出力を受け取るように結合された入
    力/出力手段とからなり、 このボート出力が上記のFIFOバッファ手段に格納された
    上記の出力データの同一の複製であり、上記のボート手
    段が上記の出すプロセッサの全てから同一の外行きのプ
    ロセッサデータを検出したときに、上記の外行きのプロ
    セッサデータの複製が上記の外行きプロセッサデータを
    出すプロセッサから上記の入力/出力手段に通される多
    重プロセッサシステム。
JP1322463A 1987-11-09 1989-12-11 多重プロセッサを備えたフォールトトレラントなコンピュータシステム Expired - Fee Related JPH079626B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US11850387A 1987-11-09 1987-11-09
US28253888A 1988-12-09 1988-12-09
US28314188A 1988-12-09 1988-12-09
US28313988A 1988-12-09 1988-12-09
US283139 1988-12-09
EP90105101A EP0447576A1 (en) 1987-11-09 1990-03-19 Synchronization of fault-tolerant computer system having multiple processors
US283141 1999-03-31
US282538 1999-03-31

Publications (2)

Publication Number Publication Date
JPH02202638A JPH02202638A (ja) 1990-08-10
JPH079626B2 true JPH079626B2 (ja) 1995-02-01

Family

ID=38829405

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1322463A Expired - Fee Related JPH079626B2 (ja) 1987-11-09 1989-12-11 多重プロセッサを備えたフォールトトレラントなコンピュータシステム

Country Status (4)

Country Link
US (1) US5317726A (ja)
EP (2) EP0372580A3 (ja)
JP (1) JPH079626B2 (ja)
CA (1) CA2003338A1 (ja)

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3144794B2 (ja) * 1990-11-09 2001-03-12 株式会社日立製作所 マルチプロセッサシステム
US5233615A (en) * 1991-06-06 1993-08-03 Honeywell Inc. Interrupt driven, separately clocked, fault tolerant processor synchronization
DE4219005A1 (de) * 1992-06-10 1993-12-16 Siemens Ag Rechnersystem
US5613127A (en) * 1992-08-17 1997-03-18 Honeywell Inc. Separately clocked processor synchronization improvement
EP0596410B1 (en) * 1992-11-04 1999-07-28 Digital Equipment Corporation Detection of command synchronisation error
US5551047A (en) * 1993-01-28 1996-08-27 The Regents Of The Univeristy Of California Method for distributed redundant execution of program modules
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
EP0616274B1 (de) * 1993-03-16 1996-06-05 Siemens Aktiengesellschaft Synchronisationsverfahren für Automatisierungssysteme
US5572620A (en) * 1993-07-29 1996-11-05 Honeywell Inc. Fault-tolerant voter system for output data from a plurality of non-synchronized redundant processors
US5600786A (en) * 1993-07-30 1997-02-04 Honeywell Inc. FIFO fail-safe bus
JPH07129426A (ja) * 1993-10-29 1995-05-19 Hitachi Ltd 障害処理方式
US5504859A (en) * 1993-11-09 1996-04-02 International Business Machines Corporation Data processor with enhanced error recovery
EP0974912B1 (en) * 1993-12-01 2008-11-05 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US5452441A (en) * 1994-03-30 1995-09-19 At&T Corp. System and method for on-line state restoration of one or more processors in an N module redundant voting processor system
JPH0863365A (ja) * 1994-08-23 1996-03-08 Fujitsu Ltd データ処理装置
JP2908739B2 (ja) * 1994-12-16 1999-06-21 インターナショナル・ビジネス・マシーンズ・コーポレイション 多重プロセッサ・システムにおけるcpuのモニタリング・システム及び方法
US5539875A (en) * 1994-12-30 1996-07-23 International Business Machines Corporation Error windowing for storage subsystem recovery
US5694556A (en) * 1995-06-07 1997-12-02 International Business Machines Corporation Data processing system including buffering mechanism for inbound and outbound reads and posted writes
JP3595033B2 (ja) * 1995-07-18 2004-12-02 株式会社日立製作所 高信頼化コンピュータシステム
US5802265A (en) * 1995-12-01 1998-09-01 Stratus Computer, Inc. Transparent fault tolerant computer system
JPH09251443A (ja) * 1996-03-18 1997-09-22 Hitachi Ltd 情報処理システムのプロセッサ障害回復処理方法
DE69736333T2 (de) * 1996-04-23 2007-07-19 Honeywell International Inc. Integriertes Gefahrenvermeidungssystem
US6141769A (en) * 1996-05-16 2000-10-31 Resilience Corporation Triple modular redundant computer system and associated method
US6145115A (en) * 1996-06-24 2000-11-07 Rohm Co., Ltd. Device for duplicating functions and a method for duplicating functions
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US5790397A (en) 1996-09-17 1998-08-04 Marathon Technologies Corporation Fault resilient/fault tolerant computing
GB2317464A (en) * 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
GB2317469B (en) * 1996-09-23 2001-02-21 Advanced Risc Mach Ltd Data processing system register control
GB2317467B (en) * 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
GB2317465B (en) * 1996-09-23 2000-11-15 Advanced Risc Mach Ltd Data processing apparatus registers.
GB2317468B (en) * 1996-09-23 2001-01-24 Advanced Risc Mach Ltd Digital signal processing integrated circuit architecture
US5784602A (en) * 1996-10-08 1998-07-21 Advanced Risc Machines Limited Method and apparatus for digital signal processing for integrated circuit architecture
US5842038A (en) * 1996-10-10 1998-11-24 Unisys Corporation Optimized input/output memory access request system and method
US6021261A (en) * 1996-12-05 2000-02-01 International Business Machines Corporation Method and system for testing a multiprocessor data processing system utilizing a plurality of event tracers
US5896523A (en) * 1997-06-04 1999-04-20 Marathon Technologies Corporation Loosely-coupled, synchronized execution
DE69804489T2 (de) * 1997-11-14 2002-11-14 Marathon Techn Corp Verfahren zur erhaltung von synchronisierter ausführung bei fehler-betriebssicheren/ fehlertoleranten rechnersystemen
US6374364B1 (en) 1998-01-20 2002-04-16 Honeywell International, Inc. Fault tolerant computing system using instruction counting
US6691183B1 (en) 1998-05-20 2004-02-10 Invensys Systems, Inc. Second transfer logic causing a first transfer logic to check a data ready bit prior to each of multibit transfer of a continous transfer operation
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6195739B1 (en) 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6119215A (en) * 1998-06-29 2000-09-12 Cisco Technology, Inc. Synchronization and control system for an arrayed processing engine
US6513108B1 (en) 1998-06-29 2003-01-28 Cisco Technology, Inc. Programmable processing engine for efficiently processing transient data
US6101599A (en) * 1998-06-29 2000-08-08 Cisco Technology, Inc. System for context switching between processing elements in a pipeline of processing elements
US6247143B1 (en) 1998-06-30 2001-06-12 Sun Microsystems, Inc. I/O handling for a multiprocessor computer system
US6728839B1 (en) 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
US6385747B1 (en) 1998-12-14 2002-05-07 Cisco Technology, Inc. Testing of replicated components of electronic device
US6173386B1 (en) 1998-12-14 2001-01-09 Cisco Technology, Inc. Parallel processor with debug capability
US6920562B1 (en) 1998-12-18 2005-07-19 Cisco Technology, Inc. Tightly coupled software protocol decode with hardware data encryption
US7206877B1 (en) 1998-12-22 2007-04-17 Honeywell International Inc. Fault tolerant data communication network
US6853623B2 (en) 1999-03-05 2005-02-08 Cisco Technology, Inc. Remote monitoring of switch network
US6754885B1 (en) 1999-05-17 2004-06-22 Invensys Systems, Inc. Methods and apparatus for controlling object appearance in a process control configuration system
AU5273100A (en) 1999-05-17 2000-12-05 Foxboro Company, The Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects
US7089530B1 (en) * 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6501995B1 (en) 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US6510352B1 (en) 1999-07-29 2003-01-21 The Foxboro Company Methods and apparatus for object-based process control
DE19950131C1 (de) * 1999-10-18 2000-11-02 Siemens Ag Integrierter Schaltkreis mit gedoppelten synchronen und asynchronen Komponenten
US6681341B1 (en) 1999-11-03 2004-01-20 Cisco Technology, Inc. Processor isolation method for integrated multi-processor systems
US6529983B1 (en) 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
US6473660B1 (en) 1999-12-03 2002-10-29 The Foxboro Company Process control system and method with automatic fault avoidance
US6779128B1 (en) 2000-02-18 2004-08-17 Invensys Systems, Inc. Fault-tolerant data transfer
US6892237B1 (en) 2000-03-28 2005-05-10 Cisco Technology, Inc. Method and apparatus for high-speed parsing of network messages
US6820213B1 (en) 2000-04-13 2004-11-16 Stratus Technologies Bermuda, Ltd. Fault-tolerant computer system with voter delay buffer
US6687851B1 (en) 2000-04-13 2004-02-03 Stratus Technologies Bermuda Ltd. Method and system for upgrading fault-tolerant systems
US6735715B1 (en) 2000-04-13 2004-05-11 Stratus Technologies Bermuda Ltd. System and method for operating a SCSI bus with redundant SCSI adaptors
US6691257B1 (en) 2000-04-13 2004-02-10 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus protocol and method for using the same
US6708283B1 (en) 2000-04-13 2004-03-16 Stratus Technologies, Bermuda Ltd. System and method for operating a system with redundant peripheral bus controllers
US6633996B1 (en) 2000-04-13 2003-10-14 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus architecture
US6901481B2 (en) 2000-04-14 2005-05-31 Stratus Technologies Bermuda Ltd. Method and apparatus for storing transactional information in persistent memory
US6802022B1 (en) 2000-04-14 2004-10-05 Stratus Technologies Bermuda Ltd. Maintenance of consistent, redundant mass storage images
US6691225B1 (en) 2000-04-14 2004-02-10 Stratus Technologies Bermuda Ltd. Method and apparatus for deterministically booting a computer system having redundant components
US6862689B2 (en) 2001-04-12 2005-03-01 Stratus Technologies Bermuda Ltd. Method and apparatus for managing session information
US6505269B1 (en) 2000-05-16 2003-01-07 Cisco Technology, Inc. Dynamic addressing mapping to eliminate memory resource contention in a symmetric multiprocessor system
US6609216B1 (en) 2000-06-16 2003-08-19 International Business Machines Corporation Method for measuring performance of code sequences in a production system
US7172859B2 (en) * 2000-07-14 2007-02-06 Transform Pharmaceuticals, Inc. System and method for optimizing tissue barrier transfer of compounds
US6948010B2 (en) * 2000-12-20 2005-09-20 Stratus Technologies Bermuda Ltd. Method and apparatus for efficiently moving portions of a memory block
US6886171B2 (en) * 2001-02-20 2005-04-26 Stratus Technologies Bermuda Ltd. Caching for I/O virtual address translation and validation using device drivers
US6766479B2 (en) 2001-02-28 2004-07-20 Stratus Technologies Bermuda, Ltd. Apparatus and methods for identifying bus protocol violations
US6766413B2 (en) 2001-03-01 2004-07-20 Stratus Technologies Bermuda Ltd. Systems and methods for caching with file-level granularity
US6874102B2 (en) * 2001-03-05 2005-03-29 Stratus Technologies Bermuda Ltd. Coordinated recalibration of high bandwidth memories in a multiprocessor computer
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
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
US6996750B2 (en) * 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
US6925512B2 (en) * 2001-10-15 2005-08-02 Intel Corporation Communication between two embedded processors
AU2003234106A1 (en) 2002-04-15 2003-11-03 Invensys Systems, Inc. Methods and apparatus for process, factory-floor, environmental, computer aided manufacturing-based or other control system with real-time data distribution
AU2003229438A1 (en) * 2002-05-10 2003-11-11 Portfolio Aid Inc. System and method for evaluating securities and portfolios thereof
JP3606281B2 (ja) * 2002-06-07 2005-01-05 オムロン株式会社 プログラマブルコントローラ及びcpuユニット並びに特殊機能モジュール及び二重化処理方法
JP3774826B2 (ja) * 2002-07-11 2006-05-17 日本電気株式会社 情報処理装置
EP1398701A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
EP1398699A1 (de) * 2002-09-12 2004-03-17 Siemens Aktiengesellschaft Verfahren zur Ereignissynchronisation, insbesondere für Prozessoren fehlertoleranter Systeme
US7467326B2 (en) * 2003-02-28 2008-12-16 Maxwell Technologies, Inc. Self-correcting computer
CN100466579C (zh) * 2003-05-20 2009-03-04 Nxp股份有限公司 时间触发的通信系统以及用于同步启动双信道网络的方法
US7848361B2 (en) * 2003-05-20 2010-12-07 Nxp B.V. Time-triggered communication system and method for the synchronization of a dual-channel network
US7146530B2 (en) * 2003-07-18 2006-12-05 Hewlett-Packard Development Company, L.P. Targeted fault tolerance by special CPU instructions
US7761923B2 (en) 2004-03-01 2010-07-20 Invensys Systems, Inc. Process control methods and apparatus for intrusion detection, protection and network hardening
US20060020852A1 (en) * 2004-03-30 2006-01-26 Bernick David L Method and system of servicing asynchronous interrupts in multiple processors executing a user program
US7426656B2 (en) * 2004-03-30 2008-09-16 Hewlett-Packard Development Company, L.P. Method and system executing user programs on non-deterministic processors
US20050240806A1 (en) * 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US8799706B2 (en) * 2004-03-30 2014-08-05 Hewlett-Packard Development Company, L.P. Method and system of exchanging information between processors
US7451384B2 (en) * 2004-07-15 2008-11-11 Honeywell International Inc. Error recovery in asynchronous combinational logic circuits
CN100520731C (zh) * 2004-10-25 2009-07-29 罗伯特·博世有限公司 在具有至少两个处理单元的计算机系统中进行模式转换和信号比较的方法和设备
GB0425860D0 (en) * 2004-11-25 2004-12-29 Ibm A method for ensuring the quality of a service in a distributed computing environment
US7549082B2 (en) * 2005-04-28 2009-06-16 Hewlett-Packard Development Company, L.P. Method and system of bringing processors to the same computational point
US8189599B2 (en) 2005-08-23 2012-05-29 Rpx Corporation Omni-protocol engine for reconfigurable bit-stream processing in high-speed networks
US7782873B2 (en) * 2005-08-23 2010-08-24 Slt Logic, Llc Omni-protocol engine for reconfigurable bit-stream processing in high-speed networks
WO2007123753A2 (en) * 2006-03-30 2007-11-01 Invensys Systems, Inc. Digital data processing apparatus and methods for improving plant performance
US8074109B1 (en) * 2006-11-14 2011-12-06 Unisys Corporation Third-party voting to select a master processor within a multi-processor computer
FR2912526B1 (fr) * 2007-02-13 2009-04-17 Thales Sa Procede de maintien du synchronisme d'execution entre plusieurs processeurs asynchrones fonctionnant en parallele de maniere redondante.
CA2694198C (en) * 2007-07-24 2017-08-08 Ge Aviation Systems Llc High integrity and high availability computer processing module
US20090133022A1 (en) * 2007-11-15 2009-05-21 Karim Faraydon O Multiprocessing apparatus, system and method
US7809980B2 (en) * 2007-12-06 2010-10-05 Jehoda Refaeli Error detector in a cache memory using configurable way redundancy
WO2009138819A1 (en) * 2008-05-14 2009-11-19 Freescale Semiconductor, Inc. Processing resource apparatus and method of synchronising a processing resource
EP2304536A4 (en) 2008-06-20 2012-08-15 Invensys Sys Inc SYSTEMS AND METHOD FOR IMMERSIBLE INTERACTION WITH ACTUAL AND / OR SIMULATED DEVICES FOR PROCESS, ENVIRONMENTAL AND INDUSTRIAL CONTROL
US8271996B1 (en) * 2008-09-29 2012-09-18 Emc Corporation Event queues
US9152427B2 (en) * 2008-10-15 2015-10-06 Hyperion Core, Inc. Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file
US8171328B2 (en) * 2008-12-31 2012-05-01 Intel Corporation State history storage for synchronizing redundant processors
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8473818B2 (en) * 2009-10-12 2013-06-25 Empire Technology Development Llc Reliable communications in on-chip networks
US9665377B2 (en) 2011-07-20 2017-05-30 Nxp Usa, Inc. Processing apparatus and method of synchronizing a first processing unit and a second processing unit
US9250944B2 (en) 2011-08-30 2016-02-02 International Business Machines Corporation Selection of virtual machines from pools of pre-provisioned virtual machines in a networked computing environment
AT511805B1 (de) * 2011-11-09 2013-03-15 Fts Computertechnik Gmbh Verfahren zur optimierung der wartezeit in replika-deterministischen systemen
GB2511957B (en) * 2011-11-22 2015-02-11 Mips Tech Inc Processor with kernel mode access to user space virtual addresses
US10353738B2 (en) 2012-03-21 2019-07-16 International Business Machines Corporation Resource allocation based on social networking trends in a networked computing environment
US9172829B2 (en) 2012-07-31 2015-10-27 Makerbot Industries, Llc Three-dimensional printer with laser line scanner
US9153049B2 (en) 2012-08-24 2015-10-06 International Business Machines Corporation Resource provisioning using predictive modeling in a networked computing environment
US10042907B2 (en) * 2012-11-29 2018-08-07 Teradata Us, Inc. Providing metadata to database systems and environments with multiple processing units or modules
US9304935B2 (en) * 2014-01-24 2016-04-05 International Business Machines Corporation Enhancing reliability of transaction execution by using transaction digests
US9465746B2 (en) 2014-01-24 2016-10-11 International Business Machines Corporation Diagnostics for transactional execution errors in reliable transactions
DE102016208864A1 (de) * 2016-05-23 2017-11-23 Robert Bosch Gmbh Recheneinheit
US11609845B2 (en) * 2019-05-28 2023-03-21 Oracle International Corporation Configurable memory device connected to a microprocessor
CN112306948A (zh) * 2019-07-31 2021-02-02 北京君正集成电路股份有限公司 一种双核打印机节省处理器代码空间的方法
CN112181495B (zh) * 2020-09-28 2022-10-18 中国人民解放军国防科技大学 一种断言寄存器操作数指令的实现方法和装置
RU2768535C1 (ru) * 2021-07-09 2022-03-24 Российская Федерация, от имени которой выступает Государственная корпорация по атомной энергии "Росатом" (Госкорпорация "Росатом") Отказоустойчивый канал системы межпроцессорных обменов с программируемым и адаптивным выбором линий передачи данных

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4644498A (en) 1983-04-04 1987-02-17 General Electric Company Fault-tolerant real time clock

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR1587572A (ja) * 1968-10-25 1970-03-20
GB1253309A (en) * 1969-11-21 1971-11-10 Marconi Co Ltd Improvements in or relating to data processing arrangements
GB1308497A (en) * 1970-09-25 1973-02-21 Marconi Co Ltd Data processing arrangements
JPS5633915B1 (ja) * 1970-11-06 1981-08-06
SE347826B (ja) * 1970-11-20 1972-08-14 Ericsson Telefon Ab L M
US3810119A (en) * 1971-05-04 1974-05-07 Us Navy Processor synchronization scheme
BE790654A (fr) * 1971-10-28 1973-04-27 Siemens Ag Systeme de traitement avec des unites de systeme
DE2202231A1 (de) * 1972-01-18 1973-07-26 Siemens Ag Verarbeitungssystem mit verdreifachten systemeinheiten
US3783250A (en) * 1972-02-25 1974-01-01 Nasa Adaptive voting computer system
CH556576A (de) * 1973-03-28 1974-11-29 Hasler Ag Einrichtung zur synchronisierung dreier rechner.
FR2253432A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
FR2253423A5 (ja) * 1973-11-30 1975-06-27 Honeywell Bull Soc Ind
IT1014277B (it) * 1974-06-03 1977-04-20 Cselt Centro Studi Lab Telecom Sistema di controllo di elaboratori di processo operanti in parallelo
US4015246A (en) * 1975-04-14 1977-03-29 The Charles Stark Draper Laboratory, Inc. Synchronous fault tolerant multi-processor system
JPS5224825A (en) * 1975-08-22 1977-02-24 Kubota Ltd Stalk conveying device for agricultral machinery
JPS5260540A (en) * 1975-11-14 1977-05-19 Hitachi Ltd Synchronization control of double-type system
US4224664A (en) * 1976-05-07 1980-09-23 Honeywell Information Systems Inc. Apparatus for detecting when the activity of one process in relation to a common piece of information interferes with any other process in a multiprogramming/multiprocessing computer system
US4456952A (en) * 1977-03-17 1984-06-26 Honeywell Information Systems Inc. Data processing system having redundant control processors for fault detection
US4358823A (en) * 1977-03-25 1982-11-09 Trw, Inc. Double redundant processor
US4187538A (en) * 1977-06-13 1980-02-05 Honeywell Inc. Read request selection system for redundant storage
GB1545169A (en) * 1977-09-22 1979-05-02 Burroughs Corp Data processor system including data-save controller for protection against loss of volatile memory information during power failure
US4234920A (en) * 1978-11-24 1980-11-18 Engineered Systems, Inc. Power failure detection and restart system
US4257097A (en) * 1978-12-11 1981-03-17 Bell Telephone Laboratories, Incorporated Multiprocessor system with demand assignable program paging stores
US4253144A (en) * 1978-12-21 1981-02-24 Burroughs Corporation Multi-processor communication network
US4380046A (en) * 1979-05-21 1983-04-12 Nasa Massively parallel processor computer
US4428044A (en) * 1979-09-20 1984-01-24 Bell Telephone Laboratories, Incorporated Peripheral unit controller
DE2939487A1 (de) * 1979-09-28 1981-04-16 Siemens AG, 1000 Berlin und 8000 München Rechnerarchitektur auf der basis einer multi-mikrocomputerstruktur als fehlertolerantes system
US4315310A (en) * 1979-09-28 1982-02-09 Intel Corporation Input/output data processing system
FR2474201B1 (fr) * 1980-01-22 1986-05-16 Bull Sa Procede et dispositif pour gerer les conflits poses par des acces multiples a un meme cache d'un systeme de traitement numerique de l'information comprenant au moins deux processus possedant chacun un cache
US4356546A (en) * 1980-02-05 1982-10-26 The Bendix Corporation Fault-tolerant multi-computer system
JPS56119596A (en) * 1980-02-26 1981-09-19 Nec Corp Control signal generator
US4493019A (en) * 1980-05-06 1985-01-08 Burroughs Corporation Pipelined microprogrammed digital data processor employing microinstruction tasking
US4412281A (en) * 1980-07-11 1983-10-25 Raytheon Company Distributed signal processing system
US4392196A (en) * 1980-08-11 1983-07-05 Harris Corporation Multi-processor time alignment control system
US4399504A (en) * 1980-10-06 1983-08-16 International Business Machines Corporation Method and means for the sharing of data resources in a multiprocessing, multiprogramming environment
US4375683A (en) * 1980-11-12 1983-03-01 August Systems Fault tolerant computational system and voter circuit
US4414624A (en) * 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
US4430707A (en) * 1981-03-05 1984-02-07 Burroughs Corporation Microprogrammed digital data processing system employing multi-phase subroutine control for concurrently executing tasks
US4455605A (en) * 1981-07-23 1984-06-19 International Business Machines Corporation Method for establishing variable path group associations and affiliations between "non-static" MP systems and shared devices
US4438494A (en) * 1981-08-25 1984-03-20 Intel Corporation Apparatus of fault-handling in a multiprocessing system
IN160140B (ja) * 1981-10-10 1987-06-27 Westinghouse Brake & Signal
DE3208573C2 (de) * 1982-03-10 1985-06-27 Standard Elektrik Lorenz Ag, 7000 Stuttgart 2 aus 3-Auswahleinrichtung für ein 3-Rechnersystem
US4497059A (en) * 1982-04-28 1985-01-29 The Charles Stark Draper Laboratory, Inc. Multi-channel redundant processing systems
US4590554A (en) * 1982-11-23 1986-05-20 Parallel Computers Systems, Inc. Backup fault tolerant computer system
US4648035A (en) * 1982-12-06 1987-03-03 Digital Equipment Corporation Address conversion unit for multiprocessor system
US4541094A (en) * 1983-03-21 1985-09-10 Sequoia Systems, Inc. Self-checking computer circuitry
US4591977A (en) * 1983-03-23 1986-05-27 The United States Of America As Represented By The Secretary Of The Air Force Plurality of processors where access to the common memory requires only a single clock interval
US4661900A (en) * 1983-04-25 1987-04-28 Cray Research, Inc. Flexible chaining in vector processor with selective use of vector registers as operand and result registers
US4577272A (en) * 1983-06-27 1986-03-18 E-Systems, Inc. Fault tolerant and load sharing processing system
US4646231A (en) * 1983-07-21 1987-02-24 Burroughs Corporation Method of synchronizing the sequence by which a variety of randomly called unrelated activities are executed in a digital processor
JPS6054052A (ja) * 1983-09-02 1985-03-28 Nec Corp 処理継続方式
DE3334796A1 (de) * 1983-09-26 1984-11-08 Siemens AG, 1000 Berlin und 8000 München Verfahren zum betrieb eines multiprozessor-steuerrechners, insbesondere fuer die zentralsteuereinheit eines fernsprech-vermittlungssystems
US4912698A (en) * 1983-09-26 1990-03-27 Siemens Aktiengesellschaft Multi-processor central control unit of a telephone exchange system and its operation
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
US4607365A (en) * 1983-11-14 1986-08-19 Tandem Computers Incorporated Fault-tolerant communications controller system
US4570261A (en) * 1983-12-09 1986-02-11 Motorola, Inc. Distributed fault isolation and recovery system and method
EP0164414A4 (en) * 1983-12-12 1986-06-05 Parallel Computers Inc COMPUTER PROCESSOR CONTROLLER.
DE3509900A1 (de) * 1984-03-19 1985-10-17 Konishiroku Photo Industry Co., Ltd., Tokio/Tokyo Verfahren und vorrichtung zum erzeugen eines farbbilds
US4638427A (en) * 1984-04-16 1987-01-20 International Business Machines Corporation Performance evaluation for an asymmetric multiprocessor system
US4633394A (en) * 1984-04-24 1986-12-30 International Business Machines Corp. Distributed arbitration for multiple processors
US4589066A (en) * 1984-05-31 1986-05-13 General Electric Company Fault tolerant, frame synchronization for multiple processor systems
US4823256A (en) * 1984-06-22 1989-04-18 American Telephone And Telegraph Company, At&T Bell Laboratories Reconfigurable dual processor system
US4959774A (en) * 1984-07-06 1990-09-25 Ampex Corporation Shadow memory system for storing variable backup blocks in consecutive time periods
JPS6184740A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 汎用オブジエクトコ−ド生成方式
US4827401A (en) * 1984-10-24 1989-05-02 International Business Machines Corporation Method and apparatus for synchronizing clocks prior to the execution of a flush operation
US4757442A (en) * 1985-06-17 1988-07-12 Nec Corporation Re-synchronization system using common memory bus to transfer restart data from non-faulty processor to failed processor
US4751639A (en) * 1985-06-24 1988-06-14 Ncr Corporation Virtual command rollback in a fault tolerant data processing system
US4845419A (en) * 1985-11-12 1989-07-04 Norand Corporation Automatic control means providing a low-power responsive signal, particularly for initiating data preservation operation
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4703452A (en) * 1986-01-03 1987-10-27 Gte Communication Systems Corporation Interrupt synchronizing circuit
US4799140A (en) * 1986-03-06 1989-01-17 Orbital Sciences Corporation Ii Majority vote sequencer
US4868832A (en) * 1986-04-30 1989-09-19 Marrington S Paul Computer power system
US4757505A (en) * 1986-04-30 1988-07-12 Elgar Electronics Corp. Computer power system
US4763333A (en) * 1986-08-08 1988-08-09 Universal Vectors Corporation Work-saving system for preventing loss in a computer due to power interruption
US4819159A (en) * 1986-08-29 1989-04-04 Tolerant Systems, Inc. Distributed multiprocess transaction processing system and method
IT1213344B (it) * 1986-09-17 1989-12-20 Honoywell Information Systems Architettura di calcolatore a tolleranza di guasto.
US4774709A (en) * 1986-10-02 1988-09-27 United Technologies Corporation Symmetrization for redundant channels
US4847837A (en) * 1986-11-07 1989-07-11 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Local area network with fault-checking, priorities and redundant backup
DE3638947C2 (de) * 1986-11-14 1995-08-31 Bosch Gmbh Robert Verfahren zur Synchronisation von Rechnern eines Mehrrechnersystems und Mehrrechnersystem
US4831520A (en) * 1987-02-24 1989-05-16 Digital Equipment Corporation Bus interface circuit for digital data processor
US4805107A (en) * 1987-04-15 1989-02-14 Allied-Signal Inc. Task scheduler for a fault tolerant multiple node processing system
CH675781A5 (ja) * 1987-04-16 1990-10-31 Bbc Brown Boveri & Cie
US4800462A (en) * 1987-04-17 1989-01-24 Tandem Computers Incorporated Electrical keying for replaceable modules
US4868826A (en) * 1987-08-31 1989-09-19 Triplex Fault-tolerant output circuits
US4868818A (en) * 1987-10-29 1989-09-19 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Fault tolerant hypercube computer system architecture
AU616213B2 (en) * 1987-11-09 1991-10-24 Tandem Computers Incorporated Method and apparatus for synchronizing a plurality of processors
US4879716A (en) * 1987-12-23 1989-11-07 Bull Hn Information Systems Inc. Resilient data communications system
US4907232A (en) * 1988-04-28 1990-03-06 The Charles Stark Draper Laboratory, Inc. Fault-tolerant parallel processing system
US4937741A (en) * 1988-04-28 1990-06-26 The Charles Stark Draper Laboratory, Inc. Synchronization of fault-tolerant parallel processing systems
US4873685A (en) * 1988-05-04 1989-10-10 Rockwell International Corporation Self-checking voting logic for fault tolerant computing applications
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5018148A (en) * 1989-03-01 1991-05-21 Ncr Corporation Method and apparatus for power failure protection
US5020059A (en) * 1989-03-31 1991-05-28 At&T Bell Laboratories Reconfigurable signal processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4644498A (en) 1983-04-04 1987-02-17 General Electric Company Fault-tolerant real time clock

Also Published As

Publication number Publication date
EP0372580A3 (en) 1991-07-24
CA2003338A1 (en) 1990-06-09
JPH02202638A (ja) 1990-08-10
US5317726A (en) 1994-05-31
EP0447576A1 (en) 1991-09-25
EP0372580A2 (en) 1990-06-13

Similar Documents

Publication Publication Date Title
US4965717A (en) Multiple processor system having shared memory with private-write capability
JPH079626B2 (ja) 多重プロセッサを備えたフォールトトレラントなコンピュータシステム
US5890003A (en) Interrupts between asynchronously operating CPUs in fault tolerant computer system
US5384906A (en) Method and apparatus for synchronizing a plurality of processors
US5317752A (en) Fault-tolerant computer system with auto-restart after power-fall
US5327553A (en) Fault-tolerant computer system with /CONFIG filesystem
US6073251A (en) Fault-tolerant computer system with online recovery and reintegration of redundant components
EP0433979A2 (en) Fault-tolerant computer system with/config filesystem
US5099485A (en) Fault tolerant computer systems with fault isolation and repair
US5255367A (en) Fault tolerant, synchronized twin computer system with error checking of I/O communication
US5249187A (en) Dual rail processors with error checking on I/O reads
US4907228A (en) Dual-rail processor with error checking at single rail interfaces
JPH0792765B2 (ja) 入/出力コントローラ
JP3030658B2 (ja) 電源故障対策を備えたコンピュータシステム及びその動作方法
US5473770A (en) Fault-tolerant computer system with hidden local memory refresh
Tamir et al. The UCLA mirror processor: A building block for self-checking self-repairing computing nodes
KR19990057809A (ko) 오류 방지 시스템

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090201

Year of fee payment: 14

LAPS Cancellation because of no payment of annual fees