JP2000040075A - マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ - Google Patents

マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ

Info

Publication number
JP2000040075A
JP2000040075A JP11186108A JP18610899A JP2000040075A JP 2000040075 A JP2000040075 A JP 2000040075A JP 11186108 A JP11186108 A JP 11186108A JP 18610899 A JP18610899 A JP 18610899A JP 2000040075 A JP2000040075 A JP 2000040075A
Authority
JP
Japan
Prior art keywords
processing
monitor
processor
processing set
progress
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP11186108A
Other languages
English (en)
Other versions
JP2000040075A5 (ja
Inventor
Emrys John Williams
エムリス・ジョン・ウィリアムズ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000040075A publication Critical patent/JP2000040075A/ja
Publication of JP2000040075A5 publication Critical patent/JP2000040075A5/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • 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/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/0745Error 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 in an input/output transactions management context
    • 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/0793Remedial or corrective actions
    • 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
    • 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/1654Error detection by comparing the output of redundant processing systems where the output of only one of the redundant processing components can drive the attached hardware, e.g. memory or I/O
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1683Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • 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/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2268Logging of test results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【課題】 複数のプロセッサが非同期で動作する決定性
マルチプロセッサ・コンピュータ・システムを提供す
る。 【解決手段】 マルチプロセッサ・コンピュータ・シス
テムは、多数の処理セット12,14を含み、処理セッ
トの内少なくとも1つは、第2の処理セットとは非同期
に動作可能である。処理セットから出力されるI/O動
作を受け取るようにモニタ18を接続し、これらの処理
セットの不良動作を識別する。また、モニタは、複数の
処理セットが同等の処理段階にあることを示す出力をこ
れらの処理セットから受け取ったときに、当該処理セッ
トに通知することにより、処理セットの動作を同期化す
るように動作可能である。モニタは、処理セットから出
力されたI/O動作をバッファし、これらI/O動作を
選択的に外部I/Oバスに送出する。処理セットは、単
一のプロセッサまたは多数のプロセッサで形成すること
ができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
・コンピュータ・システムにおける決定論(deter
minism)、かかるシステムのためのモニタおよび
プロセッサ、ならびにかかるシステムを動作させる方法
に関する。本発明は、特に、フォールト・トレラント処
理システムに適用するものである。
【0002】
【従来の技術】多くの処理システムは、厳格なタイミン
グ様式(regime)にしたがって動作し、その内部
状態を既知のクロックに基づいて変更する。かかる処理
システムの同期的な設計により、大きな有限ステート・
マシン(state machine)が得られる。こ
のマシンの内部状態および出力は、入力がクロックに既
知の関係で与えられるのであれば、完全に予測可能であ
る。この決定論(determinism)により、チ
ェック用ハードウエアを備え、あるプロセッサの動作ま
たはプロセッサ集合の動作を、他の同一のプロセッサま
たはプロセッサ集合のそれと比較することにより、フォ
ールト・トレラント・マルチ・コンピュータ・システム
の構築が可能となる。チェック用ハードウエアは、各ク
ロック上における1つ以上の処理セットの出力を比較す
ることにより、これら処理セットの動作における不良を
チェックするように構成することができる。
【0003】他の処理システムはこのように単純には作
動しない。この種の例には、クロックが未知の処理シス
テム、多数の無関係なクロックを使用するシステム、ま
たはプロセッサの動作にクロックを全く用いないシステ
ムがある。これらの処理システムは、同期有限ステート
・マシンとしてモデル化することはできない。これらの
処理システムには、コンピュータの内部状態にいずれか
の既知の関係で、入力を与えることはできない場合があ
る。これらのマシンの詳細な動作は、非決定性(non
−deterministic)である。このために、
同一システム間で動作を比較するためのチェック用ハー
ドウエアの通常の構築が妨げられる。
【0004】
【発明が解決しようとする課題】本発明の目的は、少な
くとも1つのプロセッサまたは一プロセッサ集合が、他
のプロセッサまたはプロセッサ集合とは非同期に動作す
る、決定性マルチプロセッサ・システム(determ
inistic multiprocessorsys
tem)の提供を可能にすることである。
【0005】
【課題を解決するための手段】本発明の特定のおよび好
ましい態様は、特許請求の範囲の独立項および従属項に
明記されている。従属項からの特徴の組み合わせは、適
宜独立項の特徴と組み合わせることができ、請求項には
単に明示的に記載されていないだけである。
【0006】本発明の一特徴によれば、複数の処理セッ
トを含み、少なくとも1つの処理セットが他の処理セッ
トとは非同期に動作可能なマルチプロセッサ・システム
のためのモニタが提供される。モニタは、処理セットか
ら出力されるI/O動作(オペレーション)を受け取る
ように接続可能である。モニタは、複数の処理セットが
同様の処理段階にあることを示す進行表示(progr
ess indication)を受け取ったときに、
これらの処理セットに通知することによって、当該処理
セットの動作を同期化するように動作可能である。
【0007】したがって、本発明の一実施形態において
は、I/O動作の監視を可能にすることに加えて、モニ
タは、処理セットが同等(等価)の処理段階にあること
を処理セットに示す出力に応答して、当該処理セットの
動作を同期化するために設けられる。このように、処理
中の少なくとも選択した点において、決定論的に複数の
非同期プロセッサの歩調を合せることができる。これに
よって、フォールト・トレラント動作のためのI/O動
作の相互チェックが容易となり、更に時間的に最適な割
り込みの送出も容易となる。
【0008】モニタは、少なくとも複数の処理セットの
各々から同等の進行表示を受け取った場合、進行表示を
発した処理セットに肯定応答(acknowledge
ment)信号を返すように動作可能とすることもでき
る。場合によっては、全ての処理セットから進行表示を
受け取った場合にのみ、肯定応答信号を処理セットに返
すのでもよい。
【0009】モニタは、同等の進行表示に対する肯定応
答信号と共に、I/Oデバイスからの割り込みを処理セ
ットに渡すように動作可能であることが好ましい。この
ように、割り込みは、同等の処理段階において、決定論
的に処理セットに渡すことができる。
【0010】モニタは、処理セットの同等でない動作を
検出した場合、その不良動作を判定することができる。
モニタは、2つの処理セットのみでも、あるいは3つ以
上の処理セットとでも動作可能とすることができる。3
つ以上の処理セットと共にモニタを用いる場合、多数決
によって不良処理セットを判定することができる。2つ
のみの処理セットと共にモニタを用いる場合、または処
理セットが不良を起こしたために2つの処理セットのみ
が残った場合、これらの処理セット上で処理セット診断
を起動することによって、不良処理セットを判定するこ
とが可能である。
【0011】本発明の好適な実施形態では、モニタは、
処理セットから出力されるI/O動作を受け取るように
接続可能であり、I/O動作をバッファし、処理セット
の同等の機能を判定するために、1つの処理セットから
出力されたI/O動作を他の処理セットのためにバッフ
ァされているI/O動作と比較し、これら処理セットの
同等の動作状態(即ち、同等の動作または機能)を判定
したときにのみ、状態変更I/O動作を発行する。
【0012】本発明の別の特徴によれば、マルチプロセ
ッサ・コンピュータ・システムが提供される。このシス
テムは、複数の処理セットを含み、少なくとも1つの処
理セットは、他の処理セットとは非同期に動作可能であ
る。また、本システムは、前述のようなモニタも含む。
【0013】本発明の好適な実施形態では、同期化動作
および不良(故障)監視動作は、共通のI/Oモニタ・
ユニットによって行われる。処理セットの各々は、例え
ば、適切な制御コードおよび/または適切なハードウエ
アを備えることによって、命令処理におけるその進行を
記録し、所定の進行増分(インクリメント)が記録され
る毎に、モニタに進行表示をI/O動作として発行する
ように構成することができる。進行表示をI/O動作と
して発行することにより、同期化および不良監視双方の
目的のために、モニタ・ユニット使用の簡便化が図られ
る。しかしながら、代わりに、専用信号線または共用信
号線上の信号として、進行表示を出力することも可能で
ある。
【0014】各処理セットは、命令カウンタを含むこと
ができ、進行がnカウント増分する毎に、1つの処理命
令を発行する。好適な実施形態では、カウンタはディク
リメンタ(decrementer)として実施し、デ
ィクリメンタがアンダーフローを起こしたときに、進行
表示を発行する。
【0015】進行表示同士の間隔が比較的一定となるよ
うにするためには、各命令にカウント値を関連付けるこ
とにより、命令を退けるときに、当該命令に対するカウ
ント値によってカウンタを変更すると有利である。カウ
ント値は、命令型(タイプ)、オペランドおよびアドレ
スの内1つ以上に依存することができる。
【0016】命令処理の進行記録は、処理セット内のソ
フトウエア・エミュレーションによって実行される命令
のように、ある種の命令の実行のために、処理セット内
に保留にしておくことができる。
【0017】それぞれの処理セットにおいて異なる処理
速度を可能とし、しかも処理セットの歩調を実質的に合
せておくために、進行増分の記録時に、前回の進行増分
に対する肯定応答信号が処理セットによって受け取られ
ていない場合、処理セットをストールする。処理セット
のストール状態は、前回の進行増分に対する肯定応答信
号が処理セットによって受け取られるまで保持する。
【0018】モニタは、処理セットから出力されるI/
O動作を受け取りかつバッファし、処理セットの同等の
機能を判定するために、1つの処理セットから出力され
たI/O動作を他の処理セットのためにバッファされて
いるI/O動作と比較し、処理セットの同等の動作状態
を判定したときにのみ、状態変更I/O動作を発行する
ように接続することができる。反復不可能な状態変更動
作として、副作用のあるリード(read)命令または
ライト(write)命令をあげることができる。本発
明の一実施形態は、これによって、効率的にI/O命令
に応答し、状態を変更しないI/O動作(即ち、後に不
良が判定された場合、必要に応じて、破損なくこれらを
取り下げることができる場合)を直接送出し、I/O動
作が状態を変更する場合、当該I/O動作を送出する前
に、同等の動作が判定されるまでこれらをバッファして
おくことができる。例えば、副作用のないリード命令
は、処理セットから最初にそれを受け取ったときに、モ
ニタから直接発行することができる。
【0019】三重モジュラー冗長システム(TMR:t
riple−modular−redundanc
y)、またはそれよりも高次の冗長システムでは、処理
セットの同等の動作状態は、I/O動作の多数決によっ
て判定することができる。代わりとして、全ての処理セ
ットが同じI/O動作を出力した場合に、処理セットの
同等の動作状態を判定することも可能である。処理セッ
トの同等の動作を判定する基準は、監視対称の処理セッ
トの数に応じて変更することも可能である。
【0020】比較する動作の同等性判定を容易にするた
めに、モニタは、次のように動作可能とすることができ
る。I/O動作における第1の不変情報(例えば、I/
O動作型および/または処理セット内のプロセッサ番
号)に応じて、各I/O動作毎にバッファを決定する:
I/O動作における第2の不変情報(例えば、アドレス
・フェーズの順序付けまたは順序番号)に応じて、識別
されたバッファ内におけるI/O動作の順序を決定す
る:および処理セットに対する、同等のバッファ内の同
等の位置のI/O動作における同等の第3の不変情報
(例えば、ライト値データ、I/Oコマンドおよびアド
レス)に基づいて、処理セットの同等の動作を判定す
る。
【0021】各処理セットは、複数のプロセッサを備え
る対称マイクロプロセッサとすることができる。各処理
セットが、当該処理セットのプロセッサによって共有さ
れる少なくとも1つの資源を、各処理セット毎に含む場
合、モニタは、これらの処理セットに対してmutex
(相互排除プリミティブ:mutual exclus
ionprimitive)の同等の順序付けを保証
し、それぞれの処理セットのプロセッサによるそれぞれ
の資源へのアクセスを制御し、こうして処理セットの同
等の動作を維持するように構成することができる。
【0022】mutex順序付け機構は、処理セットか
ら出力されるI/O動作を受け取るように接続され、複
数の処理セットが同等の処理段階にあることを示す出力
I/O動作を受け取ったときに、処理セットに通知する
ことにより、当該処理セットの動作を同期化するモニタ
の一部を形成することができる。
【0023】モニタは、I/O動作の同等の順序付けを
決定するボータ(voter)、および選出されたI/
O動作によってアクセスされる共通の記憶部の双方を備
えることができる。また、mutexマネージャを含む
こともできる。mutexマネージャは、各処理セット
毎に、mutex開始レジスタおよびmutex停止レ
ジスタを含むことができる。mutexマネージャは、
多数組のmutex開始レジスタと、I/Oサイクルの
ためにmutexリストにアクセスするハッシュ(ha
sh)機構を含むことができる。
【0024】本発明の更に別の態様によれば、マルチプ
ロセッサ・コンピュータ・システム用プロセッサが提供
される。このプロセッサは、進行表示発生器を備え、こ
の進行表示発生器は、1つの命令以上の命令処理の決定
された増分(インクリメント)を表す進行表示を発生す
る。
【0025】また、本発明は、1つのプロセッサが少な
くとも1つの他のプロセッサとは非同期に動作可能なマ
ルチプロセッサ・コンピュータ・システムにおいて命令
を実行する際に、プロセッサの進行を示す方法を提供す
る。この方法は、各命令を実行する毎にカウント値を変
更するステップと、所定数のカウント毎に、進行表示を
出力するステップとから成る。
【0026】本発明の別の態様によれば、少なくとも1
つの処理セットが他の処理セットとは非同期に動作可能
な複数の処理セットと、複数の処理から出力されるI/
O動作を受け取るように接続されたモニタとを備えるマ
ルチプロセッサ・コンピュータ・システムを動作させる
方法が提供される。この方法は、処理セットによって出
力される進行表示を検出するステップと、処理セットの
複数が同等の処理段階にあることを示す進行表示を受け
取ったときに、これらの処理セットに通知することによ
り、当該処理セットの動作を同期化するステップと、か
ら成る。
【0027】
【発明の実施の形態】図1は、マルチプロセッサ・コン
ピュータ・システム10の概略的な全体像であり、複数
の処理セット(processing set)12,
14,16および入出力(I/O)モニタ・ユニット1
8で構成されている。マルチプロセッサ・コンピュータ
・システム10は、2つの処理セット12,14のみで
構成することも可能であり、あるいは、破線で示す第3
の処理セット16のように、それ以外の処理セット、ま
たは更にそれ以上の処理セットを備えてもよい。処理セ
ットの各々は、単一の個別プロセッサによって形成する
ことができ、あるいは1群のプロセッサ(例えば、対称
型マルチプロセッサ(SMP:symmetirc m
ultiprocessor)システム)で構成しても
よく、通常ローカル・メモリが備えられている。かかる
処理セットは、当技術分野ではCPUセットとしても知
られている。処理セットは、同一または同等のプログラ
ムの下で動作するように構成されている。I/Oモニタ
・ユニット18は、処理セット12,14,16からの
個々の処理セットI/Oバス22,24,26等を、I
/Oデバイスが接続されている、共通I/Oデバイス・
バス20にリンクする。このように、モニタ・ユニット
18は、処理セットのI/Oバス22,24,26等と
I/Oデバイス・バス20との間にブリッジを形成す
る。尚、1つのモニタ・ユニットと1つのI/Oデバイ
ス・バス20を示すが、モニタ・ユニット18のよう
に、各々がそれぞれのI/Oデバイス・バス20を有す
る、複数のモニタ・ユニットを備えてもよい。
【0028】I/Oモニタ・ユニット(モニタ)18
は、個々のプロセッサ・ユニット12,14,16間の
動作の相違を検出し、1つ以上のこれら処理セット1
2,14,16の不良動作を判定するように構成されて
いる。
【0029】2つより多い処理セットが備えられている
場合、モニタ・ユニットは、これら処理セット間の動作
の相違を検出することができ、多数決を採用して不良
(故障)処理セットを識別し、これを無視することがで
きる。2つだけの処理セットを用いる場合、または1つ
以上の処理セットを排除した後動作可能な状態で残った
有効な処理セットが2つのみとなった場合、これら処理
セット間の動作の相違は、これら処理セットの一方の不
良動作を知らせることができるが、これらの処理セット
のどちらが不良かを識別するのは、単に多数決を採用す
るよりも、一層複雑な作業となる可能性がある。
【0030】図1に示す構成は、同期動作マルチプロセ
ッサ・システムにすることができる。この場合、個々の
処理セット12,14,16は同期的に動作しているの
で、これらは同時に同じI/O出力を与えることにな
り、したがって、モニタ・ユニット18がこれらの出力
を比較して、プロセッサが未だ同期状態にあるか否かに
ついて判定することは簡単な事である。
【0031】また、図1に示す構成は、処理セット1
2,14,16が同期的に動作していない、または完全
には同期的に動作していないシステムにも適用される。
この場合、処理セット12,14,16の同等の動作状
態(operating)(即ち、同等の動作(ope
ration)または機能)を判定するために、モニタ
・ユニット18によって、どのI/O出力を比較する必
要があるか、およびいつそれらを比較する必要があるか
について決定する際に、難題が生ずる。
【0032】簡単に言えば、非同期システムの場合、モ
ニタ・ユニット18は処理セット12,14,16から
のI/O出力を観察し、I/O入力を処理セット12,
14,16に提示することも行う。モニタ・ユニット1
8は、処理セット12,14,16の動作を同期化する
ように作用する。これについては以下で更に詳しく説明
する。1つの処理セット(例えば、12)がI/O出力
を提示し、他の処理セット(例えば、14)が提示しな
い場合、モニタ・ユニット18は、他方の処理セット1
4の出力が最終的に到達するか否か確かめるために待
つ。これは、ある時間制限、即ち、比較対象の処理セッ
ト間の最悪の場合の動作時間差まで待つように構成する
ことができる。出力が到達しない場合、または異なる出
力が到達した場合、モニタ・ユニット18は、このイベ
ントを比較ミス(mis−compare)として知ら
せるように構成することができる。この手法を用いて、
処理セット12,14,16からのI/O動作全てをモ
ニタ・ユニット18に通過させることによって、フォー
ルト・トレラント・コンピュータを構築することができ
る。モニタ・ユニット18は、少なくともある数または
ある割合の処理セット、典型的には、過半数の処理セッ
トが一致することが確かめられるまで、I/O動作の通
過(passing)を遅らせることができる。I/O
処理がI/Oシステムの状態を変化させないことをモニ
タ・ユニットがわかっている場合、例えば、副作用のな
いリードの場合、最も速い比較対象の処理セットから最
初のI/O動作出力が到達し次第、I/O動作を渡し、
動作速度を高めることができる。フォールト・トレラン
ト処理環境において、サイクルが間違いであったとシス
テムが最終的に判断した場合でも害はなく、最適化によ
って高速化が可能となる。
【0033】図2は、図1の処理セット12のような、
処理セットに可能な1つのコンフィギュレーションの概
略的な全体像である。処理セット14は、同じコンフィ
ギュレーションを有することができる。図2において、
1つ以上のプロセッサ(ここでは、4つのプロセッサ)
30が、1系統以上の内部バス32によって、処理セッ
ト・バス・コントローラ34に接続されている。処理セ
ット・バス・コントローラ34は、処理セットI/Oバ
ス22を通じて、モニタ・ユニット(図2には示されて
いない)に接続されている。図2では処理セットI/O
バス22を1つのみ示すが、他の例では、多数のモニタ
・ユニットがある場合もあり、その場合処理セット・バ
ス・コントローラ34から、モニタ・ユニット1つ当た
り1系統の処理セットI/Oバス22を備えることにな
ろう。図2に示す処理セット12では、個々のプロセッ
サが共通メモリ36を用いて動作し、共通の処理セット
I/Oバス(または、複数の処理セットI/Oバス)2
2上に、処理セット・バス・コントローラ34を介し
て、入力を受け取り出力を与える。図2は、処理セット
に可能なコンフィギュレーションの単なる一例の概略図
であり、対象の処理セットの処理要件およびその他の要
件に応じて、他の例では他のコンフィギュレーションも
可能であることは認められよう。例えば、処理セット
が、単一のプロセッサのみを含むこともあり、メモリを
有する場合も有さない場合もあり、更にI/Oバス・コ
ントローラを有する場合もある。
【0034】図3は、モニタ・ユニット18の一例の概
略全体像である。図3に示すように、モニタ・ユニット
18は、ボータ/コントローラ50を含む。システムに
備えられた処理セットの数に応じて、各I/Oバス・イ
ンターフェース52が、処理セット12,14,16へ
のI/Oバス22,24,26の各々に備えられてい
る。バス22,24,26から受け取ったI/O動作を
バッファするために、各バッファ54が備えられてい
る。各バッファ段55は、バス・インターフェース52
と、対応するバッファ54とを備えている。リターン・
ライン56は、信号をボータ50と各バス・インターフ
ェース52との間で渡すために供する。ボータ/コント
ローラは、バス22,24,26から受け取ったI/O
動作に応答し、I/O動作の共通I/Oデバイス・バス
・インターフェース58を介した共通I/Oデバイス・
バス20への受け渡しを制御する。また、ボータ/コン
トローラは、非同期的に動作する処理セット12,1
4,16の同期の度合いを選択的に制御するようにも動
作可能である。
【0035】この「同期の度合い」は、同期クロックを
必要とせずに、処理セット12,14等のプロセッサ
(または、複数のプロセッサ)30を選択的にストール
(stall)させることに基づく。これを行うには、
各プロセッサが進行表示(progress indi
cation)を与え、処理がどこまで進んだかについ
ての通知をモニタが行うことを可能とする。遠い過去に
おいて、プロセッサは、各命令の完了時に、パルスを出
力するように構成されていた。しかしながら、これはも
はや適切でない。今日では、命令は、外部に知らせるこ
とができるよりも速く完了する。また、アウト・オブ・
オーダ(out−of−order)の性質が、命令が
いつ完了したかを正確に判断することを難しくしてい
る。完了とは、当該命令自体が終了したときなのか、あ
るいは当該命令および以前の命令全てが終了したときな
のか。このような煩雑さのために、一層精巧化した進行
表示が必要である。
【0036】進行表示は、他のプロセッサとの歩調が外
れ過ぎないように、あるプロセッサの速度を低下させる
ために、モニタによって用いられる。このために、プロ
セッサも、モニタがそれらをストールすることを可能に
する何らかの方法を備える必要がある。
【0037】図4は、あるプロセッサのストールによっ
て、他のプロセッサに追いつかせる様子を示すタイミン
グ図である。図4において、時間は左から右に経過して
いく。第1の高速プロセッサP1が40において進行表
示を発行し、外部モニタからストール指示を受け取らな
ければ、処理し続けることを許される。モニタから第1
のプロセッサP1へのストール指示の返送に応答して、
第2の低速プロセッサP2によって進行表示が42にお
いて供給されるまで、このプロセッサP1はストールす
る(ブロック・シンボルによって表すように)。次い
で、第1のプロセッサは、44においてモニタからの解
放を受け取ったときに、先に進むことを許される。
【0038】進行表示は、これらの時間間隔がほぼ一定
となって、電気的通知が実用的でなくなるような速度で
出されないように、そして進行表示が決定論的に(de
terministically)実行される命令に関
係するように、発生しなければならない。ストール命令
については、外部電子回路がストールを要求することま
たはストールの要求をやめることのいずれにおいても、
例外的に速くなる必要がないことが望ましい。外部電子
回路がストールを要求しない場合、プロセッサを遅くす
る必要は全くない。しかしながら、ストールが要求され
た場合、プロセッサは正確な状態で停止し、ストールさ
れた命令までの全ての命令を退却し、それを越える命令
は発行しないようにしなければならない。
【0039】適切な進行表示を与える機構の一例は、各
N個の命令毎に1つの出力をアサート(assert)
することである。ここで、Nはある固定数(あるいは、
プログラム可能な数としてもよい)の命令である。これ
は、命令カウンタを備え、各N個の命令毎に進行表示を
出力することによって、行うことができる。これは、全
ての命令がほぼ同時に実行する場合には、うまくいく。
命令の実行時間が異なる場合、または外部通信(I/O
リード動作のような)によっていくつかの命令が延長す
る場合、この単純な機構は、進行表示の間に時間間隔を
与える可能性があり、これは余りに変動量が多く便利で
ない。
【0040】進行表示を与える機構を一層精巧化するこ
とにより、実状態(real state)に応じて命
令のカウントを変化させることが可能となる。これは、
命令のタイミングの変動を考慮し、進行表示間の間隔を
ほぼ一定にすることができる。
【0041】尚、「実状態」と言う場合、これは、ある
種の制約を受ける、プログラマが視認可能な状態を含む
と理解することとする。したがって、これは、プログラ
ム・カウンタを含む固定のレジスタ集合および主メモリ
の内容を含むが、キャッシュや中間パイプライン値のよ
うな一時的要素は除外する。「実状態」は、プロセス
と、例えば、オペレーティング・システムのステータス
・データとの間のコンテキスト(文脈)切り換えに必要
な全てのデータを含む。
【0042】図5は、これを行うための機構の一例を示
す。図5において、命令−カウント変換器61は、各命
令が実行ユニット60によって実行される毎に、適切な
時間等価量(time equivalent)に変換
する。これは、命令の実行に要する時間の最良の推定値
を表す。これを行うために、変換器61は、命令の型
(タイプ)のような、命令の1つ以上のパラメータ、処
理されるオペランド、および用いられたアドレスを含
む、生成された結果を考慮に入れることや、更に以前の
命令を考慮に入れることも可能である。1つ以上の参照
テーブル(ルックアップ・テーブル)62は、プログラ
ム可能としてもよく、パラメータと変換器61に入力す
るためのタイミング情報との間の変換ファクタを与える
ことができる。判定を行うために、変換器61は、パイ
プラインにおける輻輳、またはキャッシュ内に変数があ
るか否かのように、プロセッサの実状態に含まれないデ
ータを考慮に入れない。近似時間等価量、即ち、ある数
値をディクリメンタ(decrementer)64に
供給する。これは、ディクリメンタ64に格納されてい
る現在値から減算する減分値を形成する。ディクリメン
タ64が0未満になった場合、キャリー出力65を生成
する。キャリー出力65は、進行コントローラ66によ
って受け取られる。次に、進行コントローラ66は、進
行指標(progress indicator)67
として信号を外部に出力することができる。次の減分動
作の前に、ディクリメンタをレジスタ63からの初期値
に再度初期化する。レジスタ63は、プログラム可能と
するとよい。
【0043】命令−カウント変換器61は、格納した状
態情報を含むことができる。これの1つを適用例は、ま
ず、特定の命令のソフトウエア・エミュレーション(s
oftware emulation)を考慮する。変
換器61が、ある命令を実行する代わりにエミュレート
することを(例えば、命令タイプ情報から)検出した場
合、内部フラグをセットして、もはや命令をカウントし
てはならないことを示す。これは、0の減分値を生成す
るのと同等である。変換器61がエミュレーション・ル
ーチンの終了時に、エミュレーションから戻る命令を発
見した場合、エミュレートされた命令に対して減分値を
生成する。これは内部で計算することができ、あるいは
エミュレーション・ルーチン内の特殊コードによって与
えることもできる。このように、何らかの命令をエミュ
レートするプロセッサは、比較の目的のために、それら
を全てハードウエアで実行するプロセッサと同等とする
ことができる。
【0044】キャリー出力65は、進行コントローラ6
6によって用いられ、進行指標67を与えることができ
る。これは、プロセッサから、信号ワイヤ上のパルスま
たはステップとして出力される。あるいは、キャリー出
力は、進行コントローラ66に導出し、プロセッサのI
/Oバス上でスケジュールされる特殊進行表示I/Oサ
イクルを発行することができる。例えば、プロセッサ
は、各進行表示毎に、I/Oバス上に特殊リード・サイ
クルを発行することができる。これを概略的に図6に示
す。
【0045】図6に移る前に、ブロック68を図5に示
していることに注意すべきであろう。これは、送出/肯
定応答インディケータ68(図5参照)であり、その目
的および動作については以下で説明する。
【0046】図6は、タイミング図であり、時間は左か
ら右に進んでいく。図6は、内部進行表示1001を表
し、その結果として、プロセッサが特殊進行表示I/O
要求1002を発行する。後のある時点において、モニ
タ18は1003によって応答する。後に、プロセッサ
は別の内部進行表示1004を発生し、これが外部で他
のサイクルをトリガする。このシステムを用いると、プ
ロセッサを自動的にストールすることが可能になる。プ
ロセッサが応答1003を受け取る前に進行表示100
4を発行できないように設計する場合、モニタ18は、
単に1003の送出を遅らせることによって、プロセッ
サをストールする効果を有することができる。1003
が1004の前に適当に到達するのであれば、プロセッ
サは最大速度で実行する。1003を遅らせると、10
04を自在に延期することができる。したがって、図6
に表す構成では、速度が異なる2つのプロセッサは、そ
の進行の歩調を合わせた状態に維持することができる。
【0047】図7もタイミング図であり、時間は左から
右に進んでいく。図示のように、内部進行表示3001
の後、速い方のプロセッサ3000は特殊進行インディ
ケータI/Oサイクル要求3002を発行する。これ
は、遅い方のプロセッサ2000が、内部進行表示20
01に続いて、その同等の要求2002を発行する前で
ある。モニタ18は要求2002,3002双方を観察
するまで、応答2003,3003の発行を控える。こ
れによって、プロセッサ3000は、内部進行表示30
04を発行できる状態に進行することを禁止され、両プ
ロセッサの歩調を合わせることになる。
【0048】応答2003,3003と共に、モニタは
割り込み情報を送ることができる。これは、単純な1ビ
ット割り込み要求とすることができ、あるいは、割り込
みデータのパケット全体とすることもできる。プロセッ
サはこれを用いて、それが割り込みを行うのかあるいは
通常の処理を続けるのかについて判定することができ
る。プロセッサが内部進行表示に関連する正確な命令に
おいてのみ割り込みを行うように設計されている場合、
要求された割り込みはいずれも、進行表示2004の時
点ではプロセッサ2000によって行われ、3004の
時点ではプロセッサ3000によって行われる。ロック
ステップ・プロセッサ(lockstepproces
sor)では、これはプロセッサ2000,3000上
で正確に同じ命令の時点で行われる。モニタは、進行表
示の歩調を合わせるように作用し、双方のプロセッサが
曖昧さなく同じ進行表示上で割り込みを行うことを確実
にすることができる。プロセッサ自体は、進行表示の決
定性送出を保証し、それらの実状態によってのみ影響を
受ける。
【0049】このように進められる割り込みは、プロセ
ッサが割り込みルーチンを実行し始める前に、2回程進
行表示を遅らせることができる。この遅延が容認できな
いパフォーマンスを生じないように構成することが望ま
しい。
【0050】プロセッサ2000が進行表示2004に
近づくと、2004によって暗示される正確な命令を越
えて、命令を発行し始めたいということも当然あり得
る。命令は、速度のためにアウト・オブ・オーダを実行
する。この正確な命令の時点で正確な割り込みモデルを
与えるためには、これを許すことはできない。これは、
プロセッサの低速化を招くことになる。これを回避する
ためには、応答2003が既に受け取られ、プロセッサ
が2004において割り込みが行われないことを既に知
ったときに、この制約を無視するように設計することが
できればよい。したがって、2003が2004よりも
十分に早く発生すれば、プロセッサは最高速度で継続す
る。これによって、プロセッサの動作速度には独立し
て、プロセッサを不必要に遅くすることなく、決定性命
令の時点において正確に割り込みを送出する機構を備え
る。これは正に非同期ロックステップ・システムにおい
て必要とされていることである。
【0051】I/Oバス上で特殊進行表示I/Oサイク
ルを実行する代わりに、異なる通知手段を、基本的に同
じプロトコルのために使用することができる。I/Oバ
スとは別個のワイヤが、プロセッサの特殊サイクル要求
をモニタに搬送し、応答を返送することができる。これ
によって、I/Oバスの帯域幅を浪費することなく、進
行表示の間隔を短くすることができる。必要であれば、
プロセッサは、割り込み要求を送りだした後に、特殊I
/Oサイクルを実行し、割り込みデータのパケットを取
り込むことができる。
【0052】フォールト・トレラント・システムでは、
モニタは、進行表示が失われるという、可能性のある問
題に対処するように構成される。進行表示間の時間に、
上限を設定する。いずれの特定のインプリメンテーショ
ンにおいて選択される上限も、プロセッサ速度の変動に
基づくことができ、プロセッサの通常速度の倍数として
定義することができる。上限は、典型的に、進行表示間
の通常の時間の関数として定義される。したがって、進
行表示同士が1μs離れている場合、上限は2μsとす
ることができる。進行表示同士が100ms離れている
場合、上限は200msとすることができる。これが意
味するのは、モニタは、進行表示が到達しない場合に、
回復処置を開始する前に、2μsの代わりに少なくとも
200ms待たなければならないということである。こ
れは、進行表示の間隔は、短く明確であることが望まし
いということを示すものである。
【0053】図8は、図6および図7を参照して説明し
たように設定した個々の処理の選択的同期を可能にする
ための、図5に示した種々のエレメントの動作および相
互関係を示すフロー図である。
【0054】即ち、ある命令が発行されると、ステップ
72において変換器61による命令カウント値の判定に
続いて、ステップ74においてディクリメンタ64を更
新することができる。図5にはディクリメンタ64を示
したが、他の実施態様では、正方向に変化するカウン
タ、例えば、モジュロ−nカウンタを代わりに用いるこ
ともできる。
【0055】ステップ76において、ディクリメンタ6
4がアンダーフローを起こさなかった場合、次の命令の
ために制御はステップ72に戻る。しかしながら、ディ
クリメンタがアンダーフローを起こした場合、ステップ
78において検査を行い、前の進行表示に対する肯定応
答が受け取られているか否かについて判定を行う。前の
進行表示に対する肯定応答が受け取られている場合、ス
テップ86において進行表示をモニタ・ユニットに送
り、送出/肯定応答インディケータ68(図5参照)を
進行コントローラ66内にセットし、進行表示が送られ
たことを示すが、肯定応答は受け取られていない。次
に、制御はステップ71に戻り、ディクリメンタ64を
初期化する。
【0056】ステップ78において、送出/肯定応答イ
ンディケータ68がまだセットされていると判定された
場合、進行表示が送られたことを示すが、それに対する
肯定応答(ACK)が未だ受け取られていないので、ス
テップ80においてプロセッサをストールする。ステッ
プ82において、送出/肯定応答指示68が再度セット
され、以前に送られた進行表示に対する承認(肯定応
答)が受け取られたことを示すと判断されるまで、プロ
セッサをストールしたままとしておく。この時点で、ス
テップ84において、プロセッサを解放する。次に、制
御はステップ86に移り、次の進行表示を送り、送出/
肯定応答インディケータ68を再度セットする。次い
で、制御は次の命令のためにステップ72に戻る。
【0057】したがって、図8によれば、プロセッサ
が、更に別の進行表示をモニタ・ユニット18に送らな
ければならないと判定した時点において、前の進行表示
に対する承認が受け取られていない場合、プロセッサを
ストールすることがわかる。
【0058】前述のように、I/O進行表示は、特定の
I/O動作としてモニタ・ユニット18に送ることがで
きる。あるいは、これらは特殊ハードウエア接続(図示
せず)を通じて供給することも可能である。
【0059】図9は、図7を参照して説明したように、
個々の処理セットからの特定の進行表示I/O動作に応
答し、これら処理セットの同時動作を確立し、同時動作
が判定されたときに個々の処理セットに承認を返す、モ
ニタ・ユニットの態様の概略図である。同様の参照符号
で示され、以前に既に説明したエレメントについては、
ここでは再度説明しない。
【0060】図9に示すように、モニタ・ユニット18
に接続されている処理セットの対応するプロセッサ毎
に、進行レジスタ94が備えられている。したがって、
例えば、3つのプロセッサP0,P1,P2が2つの処
理セットPSA,PSBの各々にある場合、プロセッサ
P0,P1,P2に、それぞれ、3つの進行レジスタR
0,R1,R2がある。同期を取るために、処理セット
内の各プロセッサは、それぞれの進行レジスタに対して
特殊I/Oリード動作を発行するように動作可能であ
る。したがって、前述の例では、処理セットPSA,P
SBの各々におけるP0プロセッサは、進行レジスタR
0に特殊I/Oリード動作を発行し、処理セットPS
A,PSBの各々におけるP1プロセッサは、進行レジ
スタR1に特殊I/Oリード動作を発行し、処理セット
PSA,PSBの各々におけるP2プロセッサは、特殊
I/Oリード動作を進行プロセッサR2に発行する。モ
ニタ内のI/O同期は、同等のリードが、処理セットの
同等のプロセッサの各々によって実行されるまで、プロ
セッサに対する承認としての、リード・プロセッサに対
する応答の返送を遅らせるように構成する(即ち、当該
進行レジスタ94からのリード・データを戻すことによ
って)。この応答は、先に図6ないし図8を参照して説
明したように、プロセッサのストールを制御するために
用いられるものである。
【0061】モニタ・ユニット18内の図9の進行レジ
スタ94を読み出すための、図5を参照して説明した、
処理セット12,14等におけるロジックの組み合わせ
によって、個々の処理セットの処理を決定性(dete
rministic)とし、処理中の特定点に応じて同
期化することが可能となることがわかる。既に示したよ
うに、これは、処理セット内で実行される個々の命令を
カウントすることによって決定される、処理中の所定の
点における特殊I/O動作またはその他の進行表示信号
を供給することにより、個々の処理セットにおいては決
定性でないタイマの必要性を回避する。既に示したよう
に、カウントは、個々の命令の種類に応じて行うことが
好ましい。
【0062】処理セット12,14等は厳格に決定性で
なくてもよい場合もあるが、それらの動作に対するいく
つかの制約を遵守しなければならない。プロセッサが実
行する命令の順序を認めることができなければならな
い。通常、これは、命令がプログラムに書かれている順
序であり、分岐命令によって変更される。プロセッサ
は、内部で命令の順序を変える場合があり、命令によっ
ては並列に実行する場合もあるが、最終的な結果は、プ
ログラマが予期する順序で命令が実行されたかのよう
に、同一となるべきである。このようにならない場合、
プログラムは、プログラマが予期したような結果となら
ない可能性がある(これに関して、割り込みおよびDM
Aについて以下で論ずる)。加えて、モニタ・ユニット
18に対する出力として提示されるI/O動作の順序
は、実行の詳細なタイミングとは独立して、プログラム
によって絶対的に決定される。この機能がないとI/O
デバイスを管理するのが困難であるので、通常このよう
になっている。しかしながら、慣例的に、プロセッサは
速度のために、リードの後ろにライトを並び替えること
を注記しておく。これを可能にしつつ、しかも効果的な
I/O動作を実行することは可能である。これは、プロ
セッサがライト同士の並び替えやリード同士の並び替え
を行わないことが保証され、少なくとも最初のリードお
よび最初のライトを直ちにモニタ・ユニットに送り出す
のであれば、モニタ・ユニット内で、別個のリードおよ
びライト比較チャネルを用いて管理することができる。
【0063】図10は、共通の外部バスまたは複数のバ
ス20へのI/O動作の受け渡しを制御し、更に個々の
プロセッサ・ユニットの不良動作を判定するための、モ
ニタ・ユニット18の態様を示す概略図である。
【0064】処理セット12,14それぞれのI/Oバ
ス22,24に接続されているI/Oバス・インターフ
ェース52は、リードおよびライト動作を識別し、それ
ぞれ、ライトおよびリード動作をそれぞれのバッファ1
14/115においてバッファするように動作可能であ
る。これらのバッファ114/115は、図3のバッフ
ァ54のコンフィギュレーションの一例を表す。尚、こ
れは一例としての構成であり、他の構成には、図10に
示すようにライトおよびリードを分離しない場合もあ
り、更に異なる基準にしたがってI/O動作を分離する
場合もあることを注記しておく。I/Oライト・ボータ
116は、個々のI/O処理セット12,14等に対す
る、各バッファ114内の個々のライト動作を比較し、
同等のI/Oライト動作を受け取ったことを判定するよ
うに動作可能である。モニタ・ユニットは、タイマ12
0によって決定される所定時間まで、ライト動作をバッ
ファするように動作可能であり、更に、対応するI/O
動作がプロセッサの各々から受け取られない場合、プロ
セッサのそれぞれにおける不良を識別するように動作可
能である。同様に、リード・ボータ118が、バッファ
したリード動作を比較するために備えられており、同様
に動作する。
【0065】3つの処理セットを有する三重モジュラー
冗長(TMR:triple modular red
undant)構成では、どの処理セットが不良状態に
あるかについての判定は、それぞれ、ライトおよびリー
ド・ボータ116,118における多数決によって行う
ことができる。あるいは、2つの処理セットのみがある
構成(即ち、二重モジュラー冗長構成(DMR:dua
l redundant arrangement)で
は、どの処理セットが不良状態にあるかについての判定
は、より複雑になる可能性があるが、診断技法によって
判定することも可能である。
【0066】ライトおよびリード・ボータ116,11
8は、適切な計画にしたがって、ライトおよびリード動
作を共通I/Oバス・インターフェース58を介して共
通バスまたは複数のバス20に渡すように構成すること
ができる。例えば、先に示したように、I/O動作がI
/Oシステムの状態を変化させない場合(例えば、副作
用のないリード)、モニタ・ユニットは、処理セットか
ら出力された最初のI/O動作が到達すると直ちに、I
/O動作を通過させるように構成することができる。他
の状況において、I/O動作がI/Oシステムの状態を
変化させる場合(例えば、ライト動作または副作用のあ
るリード動作)、モニタ・ユニットは、過半数(動作可
能な処理セットが1つだけ残っている場合には、1つだ
けという可能性もある)、または恐らくは複数の処理セ
ットがI/O動作を出力する場合にのみ、当該I/O動
作を渡すように構成することができる。言い換えると、
モニタ・ユニットが複数の処理セットの同等の動作を判
定した場合、状態を変更するI/O動作がI/Oバスに
発行される。
【0067】最初にTMRシステムであっても、処理セ
ットの内1つが不良状態と判定されて、DMRシステム
になる可能性もあることは認められよう。したがって、
現在監視対象となっている有効な処理セットの数に応じ
て変動する方針にしたがって、処理セットの同等の動作
を判定することができる。
【0068】処理セットには、最終的な動作に不確定な
影響を与えるコンポーネントがあってはならない。例え
ば、各処理セットにおいて、プログラムの動作には見る
ことができるタイマは、必ずしも各プログラムにおいて
同じステップで同じ値を提示する訳ではなく、これは許
されない。一方、前述のように、実行された命令の数を
カウントするレジスタを備えることは、決定性である。
処理セットの「実状態」が、キャッシュやその他の一時
的記憶も考慮に入れて、プログラムの実行に影響を与え
得る全てのデータの総合的状態であるとすると、命令実
行の実際の順序に関して不確定的に実状態に影響を与え
るコンポーネントは許されない。必要であれば、I/O
バス上にタイマを配することも可能である。
【0069】I/O動作の順序がプログラムによって決
められ、プログラムは全ての処理セットに対して同一で
あるとすると、モニタ・ユニットは、いずれかのI/O
動作が行われた時点に、各処理セットによって同じI/
O動作が提示されるのを確認しなければならない。
【0070】処理セットが割り込みを受け取ったとき
に、これらの実状態を同一に保持するためには、同じ命
令の後に各処理セットによって割り込みが行われるよう
に構成しなければならない。処理セットがI/O動作を
行っていない場合、モニタ・ユニットは、処理セットの
命令カウンタがどこを指し示しているのか推測すること
ができない。モニタ・ユニット18は、割り込みを同期
して送出するためには、何らかの方策を必要とする。
【0071】前述のように、処理セット内の各プロセッ
サは、予測可能な方法で特殊I/O動作を発行すること
により(例えば、各100命令毎と同等)、どこまで処
理セットが進んだかについてモニタ・ユニット18が観
察することを可能とする。特殊I/O動作のカウントを
保持することによって、モニタ・ユニットは、同一命令
上で同一割り込みを、対象のプロセッサに送出すること
ができる。
【0072】特殊I/Oサイクルが、プロセッサをスト
ールするリードである場合、モニタ・ユニットは、遅い
方のプロセッサが追いつくまで、I/O動作を最初に行
う早い方のプロセッサを常に停止させるように選択する
ことができる。これはシステムを大幅に遅くすることは
ない。何故なら、全体として、比較対象の最も遅い処理
セットよりも速く長期間処理することはできないからで
ある。このように、特殊I/O動作は歩調を合せて進ん
でいくことになる。割り込みを送る必要がある場合、モ
ニタ・ユニットは、これを進行表示に対する応答と共に
戻すように構成する。これは、処理セットの同等のプロ
セッサからの進行表示を形成する特殊リード・サイクル
の全ての受け取りを保留する割り込みを保持する割り込
みレジスタとして、図9の進行レジスタ94が作用する
ように構成することによって、非常に都合よく行われ
る。このように、処理セットの同等のプロセッサから同
等のI/Oリード・サイクルの最後のサイクルの受け取
り時に応答を送ると、I/O動作を同期して送り出すこ
とができる。この時点で、個々のプロセッサ内のプログ
ラム・カウンタは、決定性命令進行カウント機構によっ
て暗示される命令を指し示しており、特殊I/Oリード
から返されるデータは、プロセッサによって割り込み情
報として取り入れられる。
【0073】共通I/Oバス・インターフェース58
は、バス20から受け取った割り込みに応答して、割り
込み信号を割り込みデータに変換し、それぞれの進行レ
ジスタ94に格納することができる。
【0074】尚、プロセッサがこの特殊リード・サイク
ルを実行するとき、プロセッサはリード・データに依存
しない、リード・サイクル周囲の進行命令を進ませるこ
とができる。通常、リード・データに依存しない命令は
いずれも、実行ユニットから引っ込めることができる。
しかしながら、これでは正確な例外モデルには至らな
い。リード・データを例外と置換する場合、例外処理中
の処理セットの実状態は、予測不可能となる。これは、
ロックステップ・システムの特殊進行表示I/Oサイク
ルには適切でない。この特定形式の命令およびバス・サ
イクルでは、例外を正確に特殊I/Oサイクルの周囲に
置くことが必要である。割り込みを送出する場合、それ
を送出する命令は予測可能でなければならず、そこまで
の全ての命令は完了しており、それを越えた全ての命令
は発行されていてはならない。
【0075】最新の処理セットでは、I/Oデバイスに
対するバス・サイクルは、必ずしも単純ではない。バス
・サイクルは、別個のアドレス・フェーズおよびデータ
・フェーズに分解することができる。データ・フェーズ
はアドレス・フェーズから切断され、必ずしもこれと同
じ順序とは限らない。多数のI/O動作(I/Oサイク
ル)を一度に進めることができ、I/O動作の最初の明
証(evidence)がプロセッサから現れる前に、
I/O命令を実行ユニットから引っ込め、完了させるこ
とも可能である。
【0076】比較対象の同等の動作の判定を容易にする
ために、モニタは、以下の動作を行うように、コンフィ
ギュレーションを変更することができる:I/O動作に
おける最初の不変情報(例えば、I/O動作タイプおよ
び/または処理セット内のプロセッサ番号)に応じて、
各I/O動作毎にバッファを決定する;I/O動作にお
ける第2の不変情報(例えば、アドレス・フェーズの順
序付けまたは順序番号)に応じて、識別されたバッファ
内におけるI/O動作の順序を決定する;および処理セ
ットに対する、同等のバッファ内の同等の位置のI/O
動作における同等の第3の不変情報(例えば、ライト値
データ、I/Oコマンドおよびアドレス)に基づいて、
処理セットの同等の動作を判定する。
【0077】図10に示す構成の拡張として、処理セッ
トを示すI/O動作における不変情報に応じた個々のI
/Oバッファに割り当てられた命令、I/O動作タイ
プ、および処理セットが多数のプロセッサを内蔵する場
合は、当該処理セット内におけるプロセッサ番号を、多
数のI/Oバッファに与えることも可能である。I/O
動作を格納するためのI/Oバッファ内の特定の位置
は、例えば、アドレス・フェーズの順序付けまたは順序
番号のような、I/Oの順序付けを表す不変情報に応じ
て決定することができる。したがって、I/Oバス・イ
ンターフェースは、前述の第1および第2の不変情報の
タイプに応じて、適切なバッファ内の適切な位置に、新
たに受け取ったI/O動作を格納するように動作可能と
することができる。したがって、I/Oモニタ18内の
1つまたは複数のボータ(例えば、リードおよびライト
・ボータ118,116)は、処理セットに対する、同
等のバッファ内の同等の位置のI/O動作における同等
の第3の不変情報に基づいて、処理セットの同等の動作
を決定するように動作可能とすることができる。第3の
不変情報は、ライト値データ、I/Oコマンド、アドレ
ス、またはI/O動作の意味を表すその他の不変情報と
することができる。モニタは、サイクル到達の正確な時
刻のような、I/Oサイクル内の変動情報を無視する。
【0078】尚、これは、処理セットの「実状態」にア
クセスする、プロセッサによる主メモリへのアクセスと
は異なることを注記しておく。このアーキテクチャは、
主メモリのアクセスには何ら制約を設けず、ロックステ
ップ動作を行うために、異なる処理セット上で同じ順序
とする必要はない。
【0079】I/Oサイクルがプロセッサにおいてデー
タ・アクセス例外をトリガしなければならないような状
況も、場合によってはあり得る。その場合を以下に記
す: 1)存在しないデバイスへのソフトウエア・アクセス、
または不適切な方法による実際のデバイスへのアクセス
のような、プログラミング・エラー; 2)デバイス・データが明らかに破損している場合や、
デバイスが全く応答しない場合のような、デバイスの不
良;および 3)モニタ・ユニットが同期外れ状態を検出した場合、
比較対象の処理セットがロックステップで動作していな
い場合のような、同期外れイベント。処理セット内にお
いて診断ルーチンをトリガし、処理セット動作の仮想マ
シン・モデルを維持するためには、モニタ・ユニットが
実際にI/Oサイクルを行った場合、何らかの回復処置
の後にI/Oサイクルが再度実行されることを予期し
て、実データを返すことができるにも係らず、アクセス
例外を返すように構成することができる。
【0080】ライト・サイクルでは、これらのイベント
はいずれもアクセス例外をトリガする必要がない: 1)存在しないデバイスの場合、データを単に破棄する
ことができ、不適切な実デバイスへのアクセスの場合、
例外変換器(58、図11を参照しながら説明する)
は、不良デバイスによるのではなく、不良アクセスによ
るデバイス不良を示し、そのように印すように構成する
ことができる; 2)ライト・データの場合、デバイスは、通常何も応答
しない;および 3)ライト命令をモニタ18内にバッファし、次いで、
モニタ18がどれが正しいのかを決定した後に、送るこ
とができる。
【0081】リード・サイクルについては、上述の場合
1および2では、適正に回復するためにアクセス例外を
返す必要はない。これらはI/Oサイクルであるので、
これらはデバイス・ドライバによって発生される。従来
のデバイス・ドライバ硬化(hardening)の使
用により、ドライバ・ソフトウエアは、デバイスから読
み取ったデータ内の誤りに対して、ドライバを硬化する
(harden)。ドライバにおけるチェック・ルーテ
ィンは、破損データの存在以外に他の手がかりがなくと
も、通常誤りを検出することができる。
【0082】図11は、通常の報告を処理するため、お
よび/または不良I/Oデバイスから回復するための構
成の概略図である。図11は、2つの処理セットを有す
るマルチプロセッサ・システムの例を対象とするが、こ
れは、2つよりも多くの処理セットを有する処理システ
ム(例えば、これまでの図に示したようなシステム)、
または単一の処理セットならびにI/O動作をプロセッ
サにおよびプロセッサから受け渡すモニタ・ユニットを
有するプロセッサ・システムにさえも、同等に適用可能
である。ここで、共通の構造は、図11のI/Oバス・
インターフェース58のようなI/Oバス・インターフ
ェースであり、外部(共通)バス20へのI/O動作の
受け渡し、ならびにI/Oデバイス130,132のよ
うなI/OデバイスからのI/O動作およびバス例外の
受け取りを制御する。I/Oインターフェース58は、
I/Oリード・サイクルの間、バスからのバス・エラー
信号(例えば、不良デバイスを示す)に応答し、このバ
ス・エラー信号をレジスタ136からの所定のデータ値
と交換し、所定のデータ値をプロセッサ12またはプロ
セッサ12,14に渡すように構成されている。I/O
インターフェース58は、I/Oライト・サイクルの
間、バス・エラー信号に応答して、ライトを放棄し、適
宜肯定応答をプロセッサ(または、複数のプロセッサ)
および/または処理セット(または、複数の処理セッ
ト)に返すことによって、I/Oサイクルを終了するよ
うに構成されている。更に、I/Oインターフェース5
8は、リード・サイクルまたはライト・サイクルの間、
バス・エラーの根源を判定し、ステータス・レジスタ1
34内の不良フラグをセットすることによって、バス・
エラーの根源を形成するデバイスに不良と印を付けるよ
うに動作可能である。デバイス、即ち、資源、またはデ
バイス・バスが最初に不良として印を付けられた場合、
プロセッサ(または、複数のプロセッサ)または処理セ
ット(または、複数の処理セット)に適宜割り込みを返
すことができる。
【0083】その後、I/Oインターフェース58は、
ステータス・レジスタ134内のフラグによって、既に
欠陥と印を付けられた資源(デバイス)130または1
32のために、処理セットの少なくとも1つからのI/
O動作に応答し、外部バス20からI/O動作が渡され
るのを防止するように動作可能である。リードの場合、
更に、所定のデータ応答を、開始した処理セットに返す
ように動作可能である。ライトの場合、動作を放棄し、
開始した処理セットに肯定応答を返すことによって終了
するように動作可能である。図11において気が付くで
あろうが、多数の処理セットからのI/O動作がボータ
/コントローラ50を通過する構成では、バス・エラー
信号の修正を行うI/Oインターフェースは、ボータ5
0と外部共通バスまたは複数のバス20との間に備えら
れる。
【0084】したがって、モニタ・ユニットは、一旦誤
りデータを返したデバイスへのアクセスを禁止し、ドラ
イバがすぐに問題に気付くようにすることができる。モ
ニタ・ユニットが、問題のあるI/Oサイクルに対し
て、指定しないデータを返し、アクセス例外を通知しな
い場合、I/Oサイクルおよび命令順序付けルールがい
かに複雑であっても、処理セットは同期状態を続ける。
モニタ・ユニットは、同じ誤りデータを2つの処理セッ
トに返さなければならない。モニタ・ユニットは、後に
割り込みによって不良を通知することを選択してもよ
い。
【0085】前述の場合3におけるリード・サイクルで
は、アクセス例外ルーチンが、プロセッサが誤りデータ
に作用するのを禁止することが重要である。例外から戻
ったときに、処理セットはI/Oリード・サイクルを再
度実行し、同期外れ状態によってトリガされた診断イベ
ントについて、基礎をなすデバイス・ドライバが全く知
ることなく進めることができる。アクセス例外ルーチン
が進行中の場合、比較対象の処理セットの「実状態」が
同一であるか否かについては問題にしない。処理セット
は既に同期外れとなっている。一層の発散(diver
gence)は大したことではない。コンフィギュレー
ションをし直して不良から回復するとき、処理セットの
内1つのみが正しいと見なされることになる。したがっ
て、アクセス例外が発生した場合、正確にどの命令が完
了しているかは問題ではない。プロセッサにおける何ら
かのトレースによって、プロセッサが放棄したI/O動
作を回復し再度実行することが可能となるのであれば、
例外は正確である必要はない。
【0086】三重モジュラー冗長(TMR:tripl
e−modular−redundant)フォールト
・トレラント・システムでは、同期外れ(OOS:ou
t−of−sync)イベントの後、1つのみではな
く、2つの処理セットが同期して実行することができる
のであれば有利である。これが行われるためには、同期
外れのI/Oリード・サイクル上でのデータ・アクセス
例外は、正確でなければならない。制約を緩めた手法と
して、モニタ・ユニットに、TMRシステムの2対1の
選出の容易な診断シグネチャを認識させ、同期外れイベ
ント時に自動的にシステムのコンフィギュレーションを
し直させることがあげられる。モニタ・ユニットは、O
OSイベント時に、比較の結果ミスとなった処理セット
の出力を直ちに無視し始め、残りの2つの処理セットに
よる二重モジュラー冗長(DMR)コンフィギュレーシ
ョンで続行する。進行中のI/Oサイクルは、何の例外
もなく完了することができ、しかもデータ・アクセス例
外は完全に正確である必要はない。
【0087】I/Oサイクルを別個のアドレス・フェー
ズおよびデータ・フェーズに分割し、アドレス・フェー
ズによってサイクルの順序を定義する場合、データ・フ
ェーズは、比較対象の処理セット上で同じ順序である必
要はない。モニタ・ユニットにとっては、こうすること
が都合良い場合もあるが、詳細なバス・タイミングの変
更は、非同期ロックステップ動作の不可欠な部分であ
り、データ・フェーズの順序替えは単にバス・タイミン
グの些細なことに過ぎない。モニタ・ユニットおよびプ
ロセッサが進行するためには、常にデッドロックのない
機構が存在しさえすればよい。資源およびプロトコル
は、十分な保留中のI/Oサイクルがモニタ18におい
て見ることができ、一致した動作を認められるように存
在しなければならない。ある処理セット内の1つのプロ
セッサからのI/Oサイクルは、他からのI/Oサイク
ルを妨げてはならない。
【0088】プロセッサが採用し得る最適化の1つは、
都合がよければ、多数のI/Oアクセスを単一のバス・
サイクルに併合することである。例えば、2つの1バイ
ト・リードが隣接するI/Oアドレスに関係する場合、
プロセッサはこれらを単一の2バイト・リードとして発
行してもよい。これは、I/Oドライバにとっては一般
的な問題である。1つの処理セットが2つの単一バイト
・サイクルを発行し、別の処理セットが1つの2バイト
・サイクルを発行した場合、モニタ・ユニットのジョブ
は難しくなる。この種の再構成は、通常の処理セットに
おいてさえも、I/Oデバイスの誤動作(mis−op
eration)の原因となり得る。したがって、処理
セットは、この併合がI/Oサイクル上で発生する必要
がないことを保証する機構を有する。非同期ロックステ
ップ動作では、これらの最適化が全てのI/Oサイクル
のために抑制されることを保証しさえすればよい。
【0089】このように、非同期ロックステップ動作が
実際にI/O実施に賦課する制約は、非常に少ないこと
がわかる。本発明の好適な実施形態では、モニタ・ユニ
ット18は、不良I/Oサイクルのためのアクセス例外
の代わりに、データのリターンによってI/Oサイクル
周囲に精巧なプロセッサ動作を可能にする。
【0090】プロセッサは、メモリ管理ユニット(MM
U:memory management unit)
全体を通じて、命令のフェッチならびにデータのリード
およびライトを実行することができる。MMUの目的
は、実アドレス空間に変換可能な仮想アドレス空間を与
えることである。これが意味するのは、変換が成功せ
ず、仮想データを物理空間上にマップできない場合、プ
ロセッサにおいて例外を発生し、基礎的な動作を乱すこ
となく、システムのコンフィギュレーションをやり直す
ことができるようにすることである。
【0091】ページ・ミス例外(page miss
exception)は、ページ・ミスを生じたイベン
トから多少分断されることが多い。例えば、命令のプリ
フェッチによって、命令実行ではなく、ページ・ミス・
ハンドラをトリガする場合がある。ライト・データ・ペ
ージ・ミスは、格納命令が実行ユニットから引っ込めら
れてかなり後に発見される場合がある。非同期システム
では、この精度欠如は、比較対象の処理セットの発散を
招く可能性がある。これに対するソリューションは、デ
ータおよび命令双方に正確なページ・ミス例外を有する
ことである。ページ・ミス例外ハンドラは、失われた命
令を必要とする場合、または失われたデータを読み取る
または書き込む場合、正確に入力しなければならない。
このイベント以前の命令は完了していなければならず、
このイベントの後の命令は開始していてはならない。
【0092】これまでの非同期ロックステップ動作の説
明は、処理セットをプロセッサを有するコアと主メモリ
の「実状態」とに分割し、モニタ・ユニットをI/Oデ
バイスから分離した。以下では、多数のプロセッサを有
する処理セットに拡大して説明を行う。
【0093】マルチプロセッサ(MP)動作では、I/
O動作にはそれらのプロセッサ番号を付けることが好ま
しい。モニタ・ユニット18は、比較対象の処理セット
全てについて、プロセッサ毎にI/O動作を比較するよ
うに構成されている。これは、前述のように、処理セッ
トから受け取るI/O動作のために、モニタ・ユニット
において多数のバッファを用いることによって行うこと
ができる。処理セット12の1つのプロセッサP0が最
初に次のI/Oサイクルを生成する場合がある。処理セ
ット14の別のプロセッサP1が最初に異なるI/Oサ
イクルを生成する場合がある。これは故障ではない。モ
ニタ・ユニットは、これを分類し、他のプロセッサが、
一致するI/Oサイクルを行うのを待つハードウエアを
有する。システムが正しく動作している場合、最終的に
はこのようになる。システムが正しく動作していない場
合、モニタ・ユニットは何らかの方法で再コンフィギュ
レーションをトリガしなければならない。しかしなが
ら、このルーチン例外は、MP非同期ロックステップ動
作では、現実の問題とはならない。
【0094】MPマシンでは、プロセッサは、「実状
態」には独立して機能する。比較対象の各処理セット内
におけるプロセッサは、同じペースで進むのではなく、
各独立した処理セット内における多数のプロセッサの相
対的な進行は関係付けられない。2つの比較対象の処理
セットa,bを想定する。各処理セットは、同じ実状態
および2つのプロセッサP0,P1を有する。P0およ
びP1は双方ともコア内に位置し、モニタ・ユニットの
干渉なく実状態にアクセスする。これは、速度に対して
は非常に望ましい。各処理セット内のP0,P1双方が
新たな資源、例えば、メモリのページを必要とする場
合、これらは実状態内に保持されている予備ページのプ
ールから、そのページを獲得するように動作する。第1
の処理セットPUAでは、P0が多少速く、次のページ
を獲得する。第2の処理セットPUBでは、P1が多少
速く、次のページを獲得する。処理セットの実状態は、
発散し、再度収束(re−converge)すること
は決してない。単一プロセッサ・システムでは、ロック
ステップ動作は、割り込みの決定性送出(determ
inistic delivery)に依存し、これは
モニタ・ユニットが調整することができる。MPシステ
ムでは、ロックステップ動作は、モニタ・ユニットには
見えない、コア動作の内部詳細にも依存する。
【0095】これを克服するために、本発明の一実施形
態では、単一の処理セットにおける多数のプロセッサが
相互排除プリミティブ(mutual exclusi
onprimitive)(mutex)を用いる方法
に対して、制御を実施する。実際には、これは、mut
exを用いるプロセッサ内の種々の処理スレッドであ
る。MPマシンでは、適当に単純なプログラミング環境
を提供するために、複数のプロセッサ(むしろ、その中
で実行するスレッド)がmutexを用いて主メモリの
エリアへのアクセスを管理する。実際には、通常、複数
のプロセッサが実状態の同じ部分で動作していることは
全くなく、直交領域で動作している。これらの領域は任
意に複雑な形状を有することができ、ある領域に属する
アドレスはどこにでも分散することができるが、領域は
重複しない。1つのプロセッサ(プロセッサ・スレッ
ド)が、他のプロセッサも同時に使用している可能性が
ある領域内のアドレスへのアクセスを必要とする場合、
最初にmutexの所有権を獲得する。そのmutex
は、誤解を防止するためにソフトウエアが特定して与え
るものである。一度に1つのプロセッサ(プロセッサ・
スレッド)のみが、1つの領域へのライト・アクセスを
獲得する。これがライト・アクセスを有する間、他のプ
ロセッサ(プロセッサ・スレッド)はリード・アクセス
を有さない。
【0096】現在のプログラミングでは、全てのプロセ
ッサ間の相互作用が厳格にmutexによって統制され
ている訳ではないことを注記するのは重要である。他の
独断性の少ない機構や、アド・ホック(ad hoc)
機構も用いることができる。例えば、1つのプロセッサ
には、ある位置に書き込む暗示的な許可を与え、他のプ
ロセッサにはその位置を読み取ることを許可することが
できる。ユーザ・プログラムには共有メモリが使用可能
であり、システムには未知のアプリケーションに、遠回
りした方式(devious scheme)を置くこ
とができる。しかしながら、これらのプログラム全て
を、mutexを用いるプログラムに変換することがで
きる。
【0097】mutexを適正に使用することにより、
当該プロセッサがその部分に対するアクセスを有する
間、他のプロセッサはそれを変更しないという重要な制
約を設け、MPシステムの複数のプロセッサ各々に、全
体的実状態(real state)の内それ自体の部
分に作用させる。したがって、あるプロセッサに見るこ
とができる部分的な実状態が、この1つのプロセッサの
動作のみに依存する場合、このプロセッサの動作は、実
状態の見える部分にのみ依存し、当該プロセッサに対す
る見える実状態の初期値によって決定される。ここで、
プログラミングが、実状態に対する変化が実状態の初期
値によって決定されることを保証するとすれば、未確定
のまま残されている唯一の変数は、種々のプロセッサに
よるmutexの獲得順序である。種々の処理セット内
のプロセッサ(プロセッサ・スレッド)が同じ順序でm
utexを獲得し解放する場合、実状態に対する変更は
全て完全に決定される。したがって、MP非同期ロック
ステップ動作に対する2つの制約は、プログラムがmu
texを適正に使用して、変更可能な実状態の部分に個
々のプロセッサのアクセスを強制(enforce)す
ること、およびハードウエアが、比較対象の処理セット
上においてmutexを同期させるように調整すること
である。
【0098】モニタ・ユニット18は、ハードウエア仲
入を行い、mutexの順序付けを実施する。mute
x獲得および解放のためのコードを変更して、モニタ・
ユニットにアクセスすることができる。したがって、モ
ニタ・ユニットには順序付けを制御するための多種多様
な方法がある。
【0099】モニタ・ユニットがmutexの順序付け
を制御するための1つの手法は、図12に示すように、
各処理セット毎に、モニタ・ユニット内にプロセッサ毎
のmutex開始および終了レジスタを有することであ
る。したがって、先の例では、処理セットA内におい
て、プロセッサP0が空きページ・リストへのアクセス
を制御するmutexを獲得しようとする。これは、ま
ずP0−PUA開始モニタ・ユニット・レジスタ(P0
−PUA−START)を読み出す。モニタ・ユニット
18は、直ちにリード結果を送り出すのを控え、プロセ
ッサP0内のコードは、リード結果が返されるまで、m
utex獲得が進められないことを確実とする。その
後、処理セットPUB内のプロセッサP1が、同じmu
texを獲得しようとして、P1−PUB開始モニタ・
ユニット・レジスタ(P1−PUB−START)を読
み出す。モニタ・ユニット18は未だ結果を送り出すの
を控えている。ここで、作成しようとしている非同期決
定論(asynchronous determini
sm)のために、P0−PUBおよびP1−PUAは間
もなく同じmutexを獲得しようとすることが保証さ
れる。例えば、処理セットPUB内のプロセッサP0が
次にこの点に到達するとする。これはP0−PUB−開
始レジスタを読み取る。今やモニタ・ユニット18は一
致するmutex、即ち、P0−PUA,P0−PUB
を有するので、進行を許可することができる。モニタ・
ユニット18は、P0−PUA−開始レジスタおよびP
0−PUB−開始レジスタ上のI/Oリードに対するリ
ード結果を返すが、P1−PUB−開始レジスタを未だ
手放さないでいる。双方の処理セット上のプロセッサP
0は、実状態上の従来の動作を用いて、引き続きmut
exを争う。いずれかのP0がmutexを獲得する
か、あるいはmutexを獲得しない。他には進行中の
mutex動作はないので、その結果は処理セットPU
A,PUB上で同じことが保証される。この後、mut
exの獲得が成功してもしなくても、双方の処理セット
PUA,PUB上のプロセッサP0は、P0−PUA停
止モニタ・ユニット・レジスタ(P0−PUA−STO
P)およびP0−PUB停止モニタ・ユニット・レジス
タ(P0−PUB−STOP)をそれぞれ読み出す。こ
の動作は、どのような順序付けが行われても、モニタ・
ユニット18によって妨げられる必要はなく、モニタ・
ユニットに、mutexのコンテンションが終了したこ
とを通知する。この時点で、モニタ・ユニット18は、
プロセッサP1に自由にmutexコンテンションを開
始させる。実際、モニタ・ユニット18がプロセッサを
ストールせずに進めさせるために行うことができる多く
の最適化がある。しかしながら、結局、動作の速度は、
最も遅いプロセッサによって決定される。
【0100】モニタ・ユニットがmutexの順序付け
を制御する他の手法は、プロセッサ毎に多数のmute
x開始レジスタを備えることである。この少数の開始レ
ジスタは、プロセッサが実行するmutexソフトウエ
ア内のハッシュ変換機構によって、大きな総数のmut
ex上にマップすることができる。どのmutexを求
めてプロセッサが争っていたかが、どの開始レジスタが
アクセスされたかを決定するが、1対1の関係である必
要はない。モニタ・ユニットは、プロセッサが同じ開始
レジスタ上でmutexを争うことを妨げるだけであ
る。これによって、プロセッサがmutexを争って多
くの時間を費やす場合に、遅延を短縮する。尚、プロセ
ッサ毎に必要な停止レジスタは1つだけでよいことを注
記しておく。各プロセッサは、一度に1つのmutex
のみを争う。ハッシュ・テーブル(hash tabl
e)を用いる場合、ハッシュ・テーブル内の独立したエ
ントリによって管理されるmutexは、プロセッサ・
セットの独立した実状態を管理する。
【0101】モニタ・ユニットがmutexの順序付け
を制御する他の手法は、モニタ・ユニットにハードウエ
アmutexを実施させることである。モニタ・ユニッ
ト内のmutexレジスタを読み取り、獲得が成功であ
ったか否かに応じて、0または1の値をプロセッサに返
すことができる。プロセッサによる同じレジスタへの書
き込みによって、モニタ・ユニットに、mutexが解
放されたことを通知することもできる。しかしながら、
この場合、制約のために、これはI/Oリードとライト
との間の決定論的(決定性の)関係の上に位置すること
に注意を払う必要がある。あるいは、異なるアドレスの
リードによっても、mutexの解放を通知することが
できる。mutex獲得のためのリードは、順序付けを
確保するために、データを返すのを遅らせることができ
る。モニタ・ユニットは、各プロセッサが多くのmut
exを実施するために多数のレジスタを備えることがで
きる。
【0102】図13Aは、mutexハードウエアに可
能なコンフィギュレーションの概略図であり、mute
xプロセッサ120およびmutex記憶部122を含
む。図13Bは、関連するアドレス・マップである。こ
の種のmutexハードウエアは、ある種の計算を高速
化するために用いることができる。図13のmutex
ハードウエアの動作についてこれより説明する。
【0103】処理セット(例えば12,14)のプロセ
ッサPが、mutex要求Nレジスタ126のアドレス
のI/Oリード要求を発行することによって、mute
xの所有権を要求する(121)。mutexプロセッ
サ120はこの要求121を処理し、mutex Nに
関連するmutex記憶部122を検査する。ここで、
mutex記憶部のハードウエアとmutexレジスタ
との間に1対1の関係は不要である。mutex記憶部
122は、当該mutexが現在所有されているかまた
は所有されていないかを示す値を収容する。いずれにし
ても、mutexプロセッサ120は、このイベントの
後、mutexが所有されたことをmutex記憶部1
22が示すことを保証する。mutexプロセッサ12
0はプロセッサにmutex応答を返し、要求元のプロ
セッサPが、mutex記憶部の元の値が所有されてい
ることまたは所有されていないことのどちらを示すかに
ついて通知させる。
【0104】mutex Nの所有権を放棄するために
は、所有するプロセッサPは、mutex解放Nレジス
タ128のアドレスを読み取る。返される値は重要でな
い。mutexプロセッサは、mutex Nに対する
mutex記憶部内の値を変更し、それが所有されてい
ないことを示す。
【0105】mutexハードウエアへのI/Oサイク
ルにプロセッサ番号を関連付けている場合、mutex
プロセッサ120は、あるmutexに対する要求が、
そのmutexを既に所有しているプロセッサPから出
されるという、可能性のあるエラーを検出することがで
きる。あるいは、このプログラミング・モデルを正しい
として定義することができ、mutexプロセッサ12
0は、mutex記憶部においてmutexが1つのプ
ロセッサPによって所有された「回数」を記憶すること
ができ、設計者の思惑通りに、mutexの解放の繰り
返しによって0まで減少したときにのみmutex所有
権を解放するか、あるいは、最初のmutexの解放時
にそれを解放する。同様に、mutexプロセッサ12
0は、解放するプロセッサPが所有していないmute
xの放出という、可能性のあるエラーを検出することが
できる。これらのエラーに関する診断情報を提示するこ
とができる。
【0106】このmutexハードウエアを非同期ロッ
クステップ・フォールト・トレラント・システムにおい
て用いるためには、これをI/Oバス上に置くことがで
きる。モニタ・ユニット18は、I/Oバス上で選出さ
れ同期化されたサイクルのみを提示するので、多数の処
理セット上での同等のmutexの順序付けを自動的に
与える。追加のモニタ機能は不要である。
【0107】モニタ・ユニットがmutexの順序付け
を制御するための更に別の手法は、前述の手法を組み合
わせて用いることである。前のパラグラフにおけるよう
に、モニタ・ユニットのハードウエアには、比較的少数
の使用度の高いmutexを実装することができ、プロ
セッサ当たり1つ以上の開始/停止レジスタが、主メモ
リ内の重要度が低い任意の数のmutexの制御を行う
ことができる。
【0108】プログラミングの簡略化のために、モニタ
・ユニットは、全ての処理セットの全てのプロセッサ
に、同じmutexに対してはモニタ・ユニットのmu
texレジスタ内の同じアドレスをアクセスさせ、mu
texの順序付けのために処理セットとプロセッサとの
間で区別するハードウエア方法を使用させることができ
る。
【0109】mutex順序付け方式によって、モニタ
・ユニットは、最初の処理セット上の最初のプロセッサ
がモニタ・ユニットmutexレジスタを読み取ると直
ちに、リード成功を返すことが可能となることに注目す
べきであろう。他の処理セットは、同期して動作してい
るのであれば、最終的には追い付くことが保証される。
これらが追い付かない場合、既に同期が外れているが、
余分な発散が生じても害を及ぼすことはない。しかしな
がら、この場合も同様に、かかる速度を高めるための最
適化は、最終的には、最も遅い処理セットを待つ必要性
によって結局制限される。
【0110】前述のように、適正にプログラムされたM
Pシステムは、実状態の一部へのプロセッサのアクセス
を制限し、他のプロセッサによって変更させないように
する。そうしないと、mutexの順序付けによって非
同期システムを決定性とすることができない。ソフトウ
エア不良によってこの制約が実施されなかったり、変更
されている実状態にプロセッサがアクセスするというこ
とが起こる可能性がある。これは、実状態へのアクセス
の順序付けが発散状になるために、比較対象の処理セッ
トの実状態に発散をもたらす可能性がある。これらのソ
フトウエア不良は、通常のMPシステムではめずらしい
ことではなく、難しいMPバグに至る。プログラムは、
それらが実際には行わないときに、データへのライト・
アクセスを有すると仮定する。システムのコンフィギュ
レーションを決める非同期ロックステップ方法は、これ
らの不良を比較的迅速に発見する方法を提供する。
【0111】通常のMPマシンでは、mutexプログ
ラミングの誤りは、2つ以上のプロセッサのプログラム
が偶然、当該mutexによって保護しようとするデー
タへのアクセスを争う場合、誤った挙動に至る。これ
は、確率の低いイベントであるかもしれない。処理セッ
トの実状態を変更した後、長い間検出されないままとな
る可能性があり、不良が明るみに出るまで、形跡(明
証)は曖昧である可能性がある。
【0112】非同期ロックステップ・マシンでは、同じ
プログラミングの誤りが、比較対象の処理セットの実状
態を発散させる場合がある。比較される実状態の一致は
比較的容易にチェックされ(以下を参照)、発散は比較
的素早く、数命令以内に検出することができる。mut
exプログラミング・エラーを検出する問題は、各mu
texの目的について詳細な知識を必要とする複雑なも
のから、実状態の比較だけを必要とする機械的なものに
変換された。恐らくロジック・アナライザを用いて、実
状態の発散後の最新のプロセッサの挙動を検査すること
により、エラーの根本的な原因に直ちに到達するであろ
う。
【0113】この変換は、アクセス・コンフリクトを生
ずる(trip over)確率を高めることはない。
これは、プログラムが実状態の問題エリアを巡視する
(visit)頻度に大きく依存する。しかしながら、
比較対象の各処理セット内でプロセッサが動作する方法
を変更すると、プログラミングの誤りが検出可能な実状
態の発散に至る可能性が高まる虞れがある。即ち、mu
texの不良を探すために、システムは、比較対象の処
理セット内のプロセッサの動作の順序が各処理セット内
において確実に異なるように構成することも可能であ
る。例えば、処理セットPUA内のプロセッサP1を、
故意に半分の速度に低下させることができる。これの最
も極端な例が発生するのは、処理セットPUA内におい
て、プロセッサP0がその全ての命令を完了することを
許され、次いでプロセッサP1が実行し、一方処理セッ
トPUB内において、プロセッサP1が完了し、次いで
プロセッサP0が実行するときである。これは、前述の
規則的な割り込みI/Oサイクル機構を用いることによ
って行うことができる。モニタ・ユニットは、この特定
の順序付けを実験として実施し、ソフトウエアのロック
不良(lockingfault)を検出するように構
成することができる。処理セットPUA上のプロセッサ
P0は、処理セットPUB上でプロセッサP1がストー
ルしている間に例えば、10000命令を実行するよう
に、あるいはその逆となるように構成することができ
る。勿論、この時プロセッサがストールしてI/Oを待
っている場合、モニタ・ユニットは、デッドロックを回
避するために、比較対象の処理セット上の適切なプロセ
ッサが進むことを許可しなければならない。
【0114】割り込みの送出は、各プロセッサに対して
個々に決定性であればよい。割り込みを送出する前に、
比較対象の各処理セット毎に共通のグローバル状態に達
する必要はない。各プロセッサは、別個に割り込み同期
サイクルを発生し、割り込みを受け取りることができ、
mutex順序付け機構は、何にでも対処する。
【0115】通常のMP処理セット内のプロセッサ間に
は隠された相互作用がある可能性があり、MP非同期ロ
ックステップ・マシンが動作するためには、規則的なm
utex方式に変換する必要がある。以下にその例をい
くつか示す。 1)2フラグ通信。
【0116】プロセッサP1はフラグFに1を書き込
み、データDが使用可能であることを示す。プロセッサ
P0はDを何らかの専用記憶部(private st
ore)に読み出し、Fに0を書き込む。
【0117】これは、完全に有効な2プロセッサ通信シ
ステムである。mutex MFによって管理されるF
へのアクセスを有することによって、これをmutex
制御システムに変換することができる。すると、動作は
次のようになる: P1 MFを獲得する P1 Fに1を書き込む P1 MFを解放する P0 MFを獲得する P0 Fを読み出す P0 Dを読み出す P0 Fに0を書き込む P0 MFを解放する 2)ページ・マップ、MMU更新。
【0118】プロセッサには、ハードウエアで自動的に
ページ・テーブルを維持するものがある。ページ・テー
ブルは、マシンの実状態に存在する。プロセッサ内のM
MUTLBは、通常、メモリ内のページ・テーブルのキ
ャッシュと見なすことができ、したがって、実状態には
大した影響を及ぼさない。しかしながら、TLBが、使
用し変更されたページ情報を自動的に主メモリのページ
・テーブルに書き込む場合、これは比較対象の処理セッ
ト上の多数のプロセッサ間で異なって書き込まれる可能
性がある。ここでは、ソフトウエアのmutexは役に
立たない。プログラムは、種々のプロセッサのハードウ
エアによって変更され得るページ・テーブルへのアクセ
スを有する。ハードウエアは、mutex方式について
は何も知らない。このための解決の1つは、ページ・テ
ーブルのハードウエアによる更新を避けることである。
ページ・テーブルの変更は、ソフトウエアによって、ペ
ージ・ミス例外ルーチンによって行うことができる。ミ
ス・ルーチンおよびページ・テーブルにアクセスするそ
の他のコードはmutexを使うことができ、モニタ・
ユニットのmutex順序付け方式が、決定論の問題を
解決する。これがうまく作用するためには、ページ・ミ
ス例外が正確でなければならない。
【0119】基本オペレーティング・システムによるメ
モリ内のページ・テーブルの更新は、特に、もはや有効
でないエントリのフラッシュ(flushing)は、
決定性動作を保証するために、プロセッサ間で互いに調
整しなければならない。エントリにロードするためのハ
ードウエアによるページ・テーブルのテーブル・ウオー
ク(table walk)は、当該エントリに対する
他のプロセッサの変更と互いに調整しなければならな
い。これは、ページ・ミスの処理を、ハードウエアのテ
ーブル・ウオークではなく、ソフトウエアの例外で行え
ば、容易である。mutex順序付けシステムは、この
問題を処理する。 3)DMA I/Oデバイスは、直接メモリアクセス(DMA)を用
いて効率的にシステムの実状態を読み取ったりあるいは
書き込むことが多い。非同期ロックステップ・マシンへ
のDMAの組み込みについて、これより説明する。
【0120】DMAを処理する1つの方法は、プロセッ
サがI/Oデバイス内のコマンド・レジスタに書き込
み、DMAが完了し、I/Oデバイスが完了ステータス
・レジスタまたは割り込みを与えることである。このシ
ーケンスは、I/O通信に用いられる主メモリのエリア
へのアクセスを制御するmutexと同様に作用する。
プロセッサは、通常、I/Oデバイスがこの通信エリア
を転送している間、この通信エリアの読み取りまたは書
き込みを回避する。これは、通常のプログラミングによ
って行うことができる。非同期ロックステップ・マシン
では、モニタ・ユニット18は、以前に説明したI/O
サイクルの比較(あるいは、完了通知のために割り込み
を用いる場合は、割り込みの送出)に必要なもの以外
に、余分な順序付けを行う必要はない。通常の処理セッ
トからの従来の順序付けの要件は、他の全ての問題を扱
う。モニタ・ユニットは、I/Oデバイスからメモリ・
サイクルへの単一のDMAアクセスを、比較対象の各処
理セット毎に変換することができる。ライト・サイクル
では、全ての処理セットに書き込む。リード・サイクル
では、全ての処理セットからのリード・データを比較す
ることができる。
【0121】他のDMA技法は、DMAを管理するコマ
ンド・バッファを主メモリに入れることである。こうす
る場合、プログラムは、非同期決定性を維持することを
保証するために、特別な注意を必要とする。特別な注意
を払わないと、DMA完了ステータスを主メモリに書き
込む場合、処理セットPUAは、完了ステータスが更新
される前に、これをサンプリングする可能性があり、一
方処理セットPUBは、これが更新された後に、サンプ
リングする可能性がある。
【0122】コマンド・バッファおよびステータス・バ
ッファが主メモリにある場合に、プロセッサ−DMA相
互作用に対する保護を設ける方法の1つは、図14に示
すように、プロセッサ毎、処理セット毎にDMAサンプ
リング・レジスタをモニタ・ユニットに備えることであ
る。I/Oデバイスが同時にアクセスしようとしている
位置に、プロセッサが読み取りまたは書き込みを行おう
としている場合、最初にP0−PUA−DMA−開始
(P0−PUA−DMA−START)レジスタを読み
取る。モニタ・ユニット内のコントローラ142は、全
ての処理セットがこの点に到達するのを待ち、同じDM
Aが全ての処理セットに対して完了したことを保証す
る。これは、リード・サイクルの結果を与えることによ
り、DMAを禁止し、処理セットを進ませる。プロセッ
サは、DMAコマンド・データを変更するかあるいは読
み取り、次いでP0−PUA−DMA−停止(P0−P
UA−DMA−STOP)モニタ・ユニット・レジスタ
を読み取る。モニタ・ユニットは、処理セットおよびD
MAが再び自由に進むことを可能にする。モニタ・ユニ
ットは直接DMA経路にあり、あらゆるDMAアクセス
を検出し制御することができるので、マルチプロセッサ
決定論に用いられるのと同じ、整順mutex機構を効
果的に行使することができる。
【0123】前述の例では、多数のDMA開始および停
止レジスタを備えることができ、各レジスタは別個のI
/Oデバイス毎にDMAアクセスを制御する。プロセッ
サが1つのデバイスのみのために主メモリ内のDMA制
御ブロックにアクセスしている場合、全てのデバイスに
対するDMAを禁止する必要はない。モニタ・ユニット
は、どのデバイスから各DMAサイクルが来るのかを把
握するように構成されている。
【0124】次に、サイン(シグネチャ)および解析器
(アナライザ)の装備について説明する。非同期処理セ
ットは、それらの同一の実状態に対して全く同一の変更
を実行しても、詳細は完全に異なるように見える。
【0125】例えば、1つの処理セット内のキャッシュ
に保持されている変数を、別の処理セットの主メモリに
移管することができる。主メモリの更新サイクルは、異
なる順序で実行することができる。1つの処理セット上
での複数のメモリ・ライトは、単一のサイクルに併合す
ることができ、一方これらは別の処理セット上に多数の
サイクルを有することができる。非同期ロックステップ
・システムにおけるI/Oサイクルは容易に比較するこ
とができるが、速度の最適化では、処理セットの実状態
に対する変更の比較が難しくなる場合がある。実状態に
注意しなくとも、適正なフォールト・トレラント・マシ
ンを構築することが可能である。しかしながら、ハード
ウエアおよびmutexソフトウエア双方の不良を素早
く診断するためには、実状態における発散を素早く検出
することが望ましい。これは、図15に示すように、サ
イン(シグネチャ)発生器150およびロジック・アナ
ライザ152を含む、サイン機構をプロセッサに追加す
ることによって行うことができる。
【0126】実状態に対する変更は、プロセッサによっ
て行われる。実状態が、プロセッサ内部のレジスタ値を
含むと考えると、レジスタに書き込むあらゆる命令が実
状態を更新することになる。限られた帯域幅のチャネル
を通じて、同期システムの動作を詳細に比較する機構を
備えることができる。同じサイン機構を用いて、非同期
決定性システム(asynchronous dete
rministicsystem)における、全てのプ
ロセッサ・レジスタ・ライト・データおよび命令を比較
することができる。
【0127】プロセッサには、それらの内部動作のサイ
ンを作成するための特別なハードウエアが追加されてい
る。サインは、プロセッサによって書き込まれるデー
タ、書き込まれるレジスタ、および命令の順序によっ
て、幾分複雑な影響を受ける。サインは、プロセッサの
実行順序には係らず、プログラマが意図した実際の順序
で、各命令が引っ込められるときに更新される。これ
は、プロセッサが完全に非同期であるかのように、ある
決定された方法で行うことができる。時々、モニタ・ユ
ニットは比較対象の異なる処理セット上のプロセッサ間
でサインを比較する。これを行うための便利な方法は、
前述のように、プロセッサがその予測可能な割り込み更
新サイクルを実行する直前に、プロセッサにそれらの現
在のサインを、それらの各サイン発生器150からモニ
タ・ユニットに、書き込ませることである。同等のプロ
セッサが異なるサインを有することをモニタ・ユニット
が検出した場合、補正処置を取らせることができる。
【0128】サイン発生に可能な比較には、異なる複数
のレベルがある。レベル1の比較は、例えば、SPAR
Cの「st」動作のように、単にライト・サイクルから
主メモリへのサインを構築することができる。各ライト
・サイクルのアドレスおよびデータは、プロセッサのサ
インを更新することができる。これは、レジスタの内容
とは離れた実状態における変化を検出する。発散値が、
見えるようになることなく、プロセッサ内部に長時間潜
んでいる可能性がある。これが見えるようになったとき
には、発散の理由を発見することは困難であろう。ロジ
ック・アナライザは、これを発見するために、任意に深
い記憶を必要とする。ここで、サイクルの併合(即ち、
ロード/格納ユニットが2つの隣接する小さな格納動作
を1つの大きな格納動作に併合する傾向)は禁止すべき
ことを注記しておく。
【0129】レベル2の比較は、全ての主メモリのライ
トおよび全てのレジスタのライトからもサインを構築す
る。これに必要なハードウエアは増えるが、有限のアナ
ライザの記憶要件の範囲内で、発散が素早く検出される
ことが保証される。
【0130】レベル3の比較は、メモリ・ライト、レジ
スタ・ライトおよびメモリ・リードからサインを構築す
る。不良システムにおいて、各プロセッサからの全ての
ライトから、異なる実状態についても、同じサインを生
成することは可能である。何故なら、1つのプロセッサ
からのライトは別のプロセッサからのライトを上書き
し、プロセッサの順序付けは処理セット間で異なるから
である。これは、ライト・データ・サインを変化させる
ことによって最終的に観察されたときに、方法1および
2によって検出することができるが、データ・リードお
よび実状態を用いることができる、一層巧妙な検出方法
がある。レジスタ・リード・データは、このように発散
することはあり得ない。何故なら、レジスタはローカル
・プロセッサによってのみ書き込むことができるからで
ある。
【0131】サインの比較と組み合わせることにより、
プロセッサ内に組み込まれた小さなロジック・アナライ
ザは、mutexプログラミングの誤りのための優れた
デバッグ機能を提供することができる。ロジック・アナ
ライザ152の記憶要件は、あるサイン比較から次のサ
イン比較までで十分である。プロセッサ内に組み込まれ
たアナライザは、実行される命令、主メモリから読み出
されるデータ、レジスタに書き込まれるデータ、および
主メモリに書き込まれるデータの完全なビューを有する
ことができる。異なる処理セットおよびプロセッサ内の
アナライザ間における実行時の通信は不要である。
【0132】サインが異なる場合、全てのプロセッサに
おけるロジック・アナライザをトリガすることができ
る。割り込みによって、処理セットに、それらの(発散
した)状態をディスクにダンプすることができる。ま
た、各プロセッサからのロジック・アナライザ・データ
も、ダンプすることができる。システムは、人による分
析のために、ダンプ・データを送り出すことができる。
可能であれば、処理セットは実行し続けることができ
る。
【0133】以上のように、フォールト・トレラント・
マイクロプロセッサ・コンピュータ・システムを形成す
るのに適した、非同期処理セットを採用したマイクロプ
ロセッサ・コンピュータ・システムについて記載した。
本発明の一実施形態は、複数の処理セットまたはプロセ
ッサの内1つ以上が、当該処理セットまたはプロセッサ
の内別の1つ以上と非同期に動作するあらゆるシステム
に適用可能である。
【0134】本発明の種々の実施形態は、1つ以上の次
にあげる特徴を含む、独特かつ好ましい特徴を備えるこ
とができる: −同期されていない(non−synchoroniz
ed)処理セットを用いるロックステップ・システム; −非同期(asynchronous)プロセッサの決
定性動作; −無同期(unsynchronized)システムに
おける決定性割り込みの送出; −モニタ・ユニットによる非同期的比較および同期化; −非同期的な決定論のためのmutexの順序付け; −mutexの順序付けのためのモニタ・ユニット; −mutex不良発見のための非同期ロックステップ; −非同期的な決定論を備えたDMA機構。
【0135】本発明の一実施形態では、異なるマスク・
バーションのプロセッサを用いて、ロックステップ・フ
ォールト・トレラント・システムを構築可能である。ま
た、重要なクロックの位相ロック制御の必要性がないの
で、従来の同期システムよりも格段に一般的なハードウ
エアによって、ロックステップ・フォールト・トレラン
ト・システムを構築することができる。ロックステップ
・フォールト・トレランスは、同期手法を用いる場合よ
りも、大幅に縮小したハードウエアの再設計によって行
うことができる。非同期プロセッサは、同じ設計に対し
て2倍のトランジスタを用いる場合があるが、同期シス
テムの1/10の電力消費で稼働することができる。プ
ロセッサの設計者にとって使用可能なトランジスタ数が
増えるので、非同期設計はプロセッサにとって普通のこ
と(commonplace)となる可能性があり、本
発明の一実施形態は、かかるプロセッサを用いたロック
ステップ・システムの生成を可能にするものである。モ
ニタ・ユニットの注意深い設計により、完全に正確でな
く単に再起動可能なI/Oデータ・アクセス例外が許さ
れる。これは、プロセッサ内にバス動作のための設計自
由度を与える。
【0136】これまで、複数の処理セットを含むマルチ
プロセッサ・システムのためのモニタについて説明し
た。少なくとも1つの処理セットが他の処理セットとは
非同期に動作可能である。モニタは、処理セットから出
力されるI/O動作を受け取り、複数の処理セットが同
様の処理段階にあることを示す進行表示を受け取ったと
きに、これらの処理セットに通知することによって、当
該処理セットの動作を同期化するように動作可能であ
る。
【0137】本発明の特定実施形態について説明した
が、特許請求の範囲に定義した本発明の精神および範囲
以内において、多くの変更/追加および/または置換が
可能であることは理解されるであろう。
【図面の簡単な説明】
【図1】マイクロプロセッサ・コンピュータ・システム
の概略ブロック図である。
【図2】図1のシステムのための一処理セットの概略図
である。
【図3】図1のシステムのモニタ・ユニットの概略ブロ
ック図である。
【図4】他のプロセッサに捕獲させるためのプロセッサ
のストールを示す図である。
【図5】図1のプロセッサの一態様の概略ブロック図で
ある。
【図6】進行の指示のための特殊I/Oサイクルを示す
図である。
【図7】コンピュータの歩調を合わせる処理を示す図で
ある。
【図8】図1のシステムの動作を示すフロー図である。
【図9】図1のモニタ・ユニットの一態様を示す概略ブ
ロック図である。
【図10】図1のモニタ・ユニットの別の態様を示す概
略ブロック図である。
【図11】図1のシステムの一態様を示す概略ブロック
図である。
【図12】図1のシステムの別の態様を示すブロック図
である。
【図13】図13Aは、mutexハードウエアを示す
概略ブロック図である。図13Bは、図13Aに関連す
るアドレス・マップを示す図である。
【図14】図1のシステムの他の態様を示す概略ブロッ
ク図である。
【図15】図1のシステムの更に別の態様を示す概略ブ
ロック図である。
【符号の説明】
10 マルチプロセッサ・コンピュータ・システム 12,14,16 処理セット 18 入出力(I/O)モニタ・ユニット 20 共通I/Oデバイス・バス 22,24,26 処理セットI/Oバス 30 プロセッサ 32 内部バス 34 処理セット・バス・コントローラ 50 ボータ/コントローラ 52 I/Oバス・インターフェース 54 バッファ 55 バッファ段 56 リターン・ライン 58 共通I/Oバス・インターフェース 60 実行ユニット 61 命令−カウント変換器 62 ルックアップ・テーブル 63 レジスタ 64 ディクリメンタ 65 キャリー出力 66 進行コントローラ 67 進行指標
───────────────────────────────────────────────────── フロントページの続き (71)出願人 597004720 2550 Garcia Avenue,MS PAL1−521,Mountain V iew,California 94043− 1100,United States of America (72)発明者 エムリス・ジョン・ウィリアムズ アメリカ合衆国カリフォルニア州94089, サニーヴェイル,モース・アベニュー 1063,ナンバー 3−205

Claims (48)

    【特許請求の範囲】
  1. 【請求項1】 複数の処理セットを含み、少なくとも1
    つの処理セットが他の処理セットとは非同期に動作可能
    なマルチプロセッサ・システムのためのモニタであっ
    て、該モニタが、前記処理セットから出力されるI/O
    動作を受け取るように接続可能であり、前記モニタが、
    前記処理セットの複数が同等の処理段階にあることを示
    す進行表示を受け取ったときに、前記処理セットに通知
    することによって、当該処理セットの動作を同期化する
    ように動作可能である、モニタ。
  2. 【請求項2】 請求項1記載のモニタにおいて、該モニ
    タが、更に、少なくとも複数の処理セットの各々から同
    等の進行表示を受け取ったとき、受け取った進行表示を
    発した前記処理セットに、肯定応答信号を返すように動
    作可能である、モニタ。
  3. 【請求項3】 請求項1記載のモニタにおいて、該モニ
    タが、更に、全ての処理セットから同等の進行表示を受
    け取ったとき、当該処理セットに肯定応答信号を返すよ
    うに動作可能である、モニタ。
  4. 【請求項4】 請求項1記載のモニタであって、該モニ
    タが、I/Oデバイスからの割り込みに応答し、同等の
    進行表示のための肯定応答信号と共に、前記割り込みを
    前記処理セットに渡すことによって、同等の処理段階に
    ある前記処理セットに前記割り込みを渡す、モニタ。
  5. 【請求項5】 請求項1記載のモニタにおいて、該モニ
    タが、監視対象の処理セットの同等でない動作を検出し
    たとき、その不良動作を判定するように動作可能であ
    る、モニタ。
  6. 【請求項6】 請求項1記載のモニタにおいて、該モニ
    タが、第3の処理セットからI/O動作を受け取るよう
    に動作可能であり、前記モニタが、多数決によって処理
    セット上の不良を判定するように動作可能なボータを備
    える、モニタ。
  7. 【請求項7】 請求項6記載のモニタにおいて、前記シ
    ステムが2つの残された処理セットのみを含む場合、前
    記モニタが、更に、前記処理セット上で処理セット診断
    を起動することによって、処理セット上の不良を判定す
    るように動作可能である、モニタ。
  8. 【請求項8】 請求項1記載のモニタにおいて、前記シ
    ステムが2つの処理セットから成る場合、前記モニタ
    が、前記処理セット上で処理セット診断を起動すること
    によって、処理セット上の不良を判定するように動作可
    能である、モニタ。
  9. 【請求項9】 請求項1記載のモニタにおいて、該モニ
    タが、前記処理セットから出力されるI/O動作を受け
    取るように接続可能であり、該I/O動作をバッファ
    し、前記処理セットの同等な機能を判定するために、1
    つの処理セットから出力されたI/O動作を、他の処理
    セットのためにバッファされたI/O動作と比較し、該
    処理セットの同等な動作状態を判定したときのみ、状態
    変更I/O動作を発行するように動作可能である、モニ
    タ。
  10. 【請求項10】 マルチプロセッサ・コンピュータ・シ
    ステムであって、 複数の処理セットであって、少なくとも1つの処理セッ
    トが、他の処理セットとは非同期に動作可能な、処理セ
    ットと、 前記複数の処理セットから出力されるI/O動作を受け
    取るように接続され、前記処理セットの不良動作を識別
    するモニタであって、更に、複数の前記処理セットが同
    等の処理段階にあることを示す進行表示を受け取ったと
    きに、前記処理セットに通知することにより、当該処理
    セットの動作を同期化するように動作可能である、モニ
    タと、を備えるマルチプロセッサ・コンピュータ・シス
    テム。
  11. 【請求項11】 請求項10記載のシステムにおいて、
    前記処理セットの各プロセッサが、その命令処理におけ
    る進行を記録し、所定の進行の増分が記録される毎に、
    前記モニタに進行表示を発行する、システム。
  12. 【請求項12】 請求項11記載のシステムにおいて、
    前記進行表示がI/Oサイクルである、システム。
  13. 【請求項13】 請求項12記載のシステムにおいて、
    前記進行表示が特殊リードI/Oサイクルである、シス
    テム。
  14. 【請求項14】 請求項11記載のシステムにおいて、
    各プロセッサが、各nカウント(ここで、n>1)毎に
    進行表示を発行する命令カウンタを備える、システム。
  15. 【請求項15】 請求項14記載のシステムにおいて、
    前記命令カウンタがディクリメンタである、システム。
  16. 【請求項16】 請求項14記載のシステムにおいて、
    各命令にはカウント値が関連付けられ、命令の実行時に
    該命令に対する前記カウント値によって前記カウンタを
    変更する、システム。
  17. 【請求項17】 請求項16記載のシステムにおいて、
    前記カウント値が、命令型に依存する、システム。
  18. 【請求項18】 請求項16記載のシステムにおいて、
    前記カウント値がオペランドに依存する、システム。
  19. 【請求項19】 請求項16記載のシステムにおいて、
    前記カウント値がアドレスに依存する、システム。
  20. 【請求項20】 請求項11記載のシステムにおいて、
    前記命令処理の進行の記録は、少なくとも所定の命令の
    実行のために、プロセッサ内において保留にされる、シ
    ステム。
  21. 【請求項21】 請求項20記載のシステムにおいて、
    前記所定の命令は、前記処理セット内におけるソフトウ
    エア・エミュレーションによって実行される、システ
    ム。
  22. 【請求項22】 請求項10記載のシステムにおいて、
    前記モニタは、少なくとも複数の処理セットの各々から
    同等の進行表示を受け取ったとき、受け取った進行表示
    を発した前記処理セットに、肯定応答信号を返す、シス
    テム。
  23. 【請求項23】 請求項22記載のシステムにおいて、
    全ての処理セットから同等の進行表示を受け取ったと
    き、前記モニタが前記処理セットに肯定応答信号を返
    す、モニタ。
  24. 【請求項24】 請求項22記載のシステムにおいて、
    前の進行増分に対する肯定応答信号が未だ受け取られて
    いない場合、進行増分量だけ処理セットをストールし、
    前記前の進行増分に対する前記肯定応答信号が受け取ら
    れるまで、前記処理セットをストールしておく、システ
    ム。
  25. 【請求項25】 請求項22記載のシステムにおいて、
    前記モニタが、I/Oデバイスからの割り込みに応答
    し、同等の進行表示のための肯定応答信号と共に、前記
    割り込みを前記処理セットに渡すことによって、同等の
    処理段階にある前記処理セットに前記割り込みを渡す、
    システム。
  26. 【請求項26】 請求項10記載のシステムにおいて、
    前記モニタが、監視対象の処理セットの同等でない動作
    を検出した場合、その不良動作を判定するように動作可
    能である、システム。
  27. 【請求項27】 請求項26記載のシステムであって、
    少なくとも第3の処理セットを更に備え、第3の処理セ
    ットから少なくとも出力トラフィックを受け取るように
    前記モニタを更に接続し、前記モニタが、多数決によっ
    て処理セット上の不良を判定するように動作可能であ
    る、システム。
  28. 【請求項28】 請求項27記載のシステムにおいて、
    該システムが2つの残された処理セットのみを含む場
    合、該モニタが、更に、該処理セット上で処理セット診
    断を起動することによって、処理セット上の不良を判定
    するように動作可能である、システム。
  29. 【請求項29】 請求項26記載のシステムにおいて、
    該システムが2つの処理セットを備える場合、前記モニ
    タが、前記処理セット上で処理セット診断を起動するこ
    とによって、処理セット上の不良を判定するように動作
    可能である、システム。
  30. 【請求項30】 請求項10記載のシステムにおいて、 前記モニタが、前記処理セットから出力されるI/O動
    作を受け取るように接続され、該I/O動作をバッファ
    し、前記処理セットの同等な機能を判定するために、1
    つの処理セットから出力されたI/O動作を、他の処理
    セットのためにバッファされたI/O動作と比較し、前
    記処理セットの同等な動作状態を判定したときのみ、状
    態変更I/O動作を発行するように動作可能である、シ
    ステム。
  31. 【請求項31】 請求項10記載のシステムにおいて、
    各処理セットが、複数のプロセッサを備える対称マルチ
    プロセッサである、システム。
  32. 【請求項32】 進行表示発生器を備えるプロセッサで
    あって、該進行表示発生器が、1つの命令以上の命令処
    理の決定されたインクリメントを表す進行表示を出力す
    る、プロセッサ。
  33. 【請求項33】 請求項32記載のプロセッサにおい
    て、前記進行表示が、I/Oサイクルとして出力され
    る、プロセッサ。
  34. 【請求項34】 請求項33記載のプロセッサにおい
    て、前記進行表示が特殊リードI/Oサイクルである、
    プロセッサ。
  35. 【請求項35】 請求項32記載のプロセッサであっ
    て、各nカウント毎に、進行表示を発行する命令カウン
    タを備える、プロセッサ。
  36. 【請求項36】 請求項35記載のプロセッサにおい
    て、前記命令カウンタがディクリメンタである、プロセ
    ッサ。
  37. 【請求項37】 請求項35記載のプロセッサにおい
    て、各命令にはカウント値が関連付けられており、命令
    の実行時に、該命令に対する前記カウント値によって前
    記カウンタを変更する、プロセッサ。
  38. 【請求項38】 請求項37記載のプロセッサにおい
    て、前記カウント値が命令型に依存する、プロセッサ。
  39. 【請求項39】 請求項37記載のプロセッサにおい
    て、前記カウント値がオペランドに依存する、プロセッ
    サ。
  40. 【請求項40】 請求項37記載のプロセッサにおい
    て、前記カウント値がアドレスに依存する、プロセッ
    サ。
  41. 【請求項41】 請求項35記載のプロセッサにおい
    て、前記命令処理の進行の記録は、少なくとも所定の命
    令の実行のために、プロセッサ内において保留にされ
    る、プロセッサ。
  42. 【請求項42】 請求項41記載のプロセッサにおい
    て、前記所定の命令は、前記処理セット内におけるソフ
    トウエア・エミュレーションによって実行される、プロ
    セッサ。
  43. 【請求項43】 請求項32記載のプロセッサであっ
    て、前の進行増分に対する肯定応答信号が未だ受け取ら
    れていないとき、進行増分に応答して前記プロセッサを
    ストールする進行増分コントローラを備え、前記プロセ
    ッサが、前記前の進行増分に対する前記肯定応答信号が
    受け取られるまで、保留にされる、プロセッサ。
  44. 【請求項44】 請求項32記載のプロセッサにおい
    て、該プロセッサが、進行表示に関連する命令におい
    て、割り込みを行うように動作可能である、プロセッ
    サ。
  45. 【請求項45】 請求項32記載のプロセッサを複数備
    える、対称マルチプロセッサ。
  46. 【請求項46】 1つのプロセッサが少なくとも1つの
    他のプロセッサとは非同期に動作可能なマルチプロセッ
    サ・コンピュータ・システムにおいて命令を実行する際
    に、前記プロセッサの進行を示す方法であって、 各命令を実行する毎にカウント値を変更するステップ
    と、 所定数のカウント毎に、進行表示を出力するステップ
    と、を含む方法。
  47. 【請求項47】 請求項46記載の方法であって、前記
    実行した命令の関数として、前記カウント変更子を決定
    するステップを含む、方法。
  48. 【請求項48】 少なくとも1つの処理セットが他の処
    理セットとは非同期に動作可能な複数の処理セットと、
    前記複数の処理セットから出力されるI/O動作を受け
    取るように接続され、前記処理セットの不良動作を識別
    するモニタとを備えるマルチプロセッサ・コンピュータ
    ・システムを動作させる方法であって、 前記処理セットによって出力される進行表示を検出する
    ステップと、 前記処理セットの複数が同等の処理段階にあることを示
    す進行表示を受け取ったときに、前記処理セットに通知
    することにより、前記処理セットの動作を同期化するス
    テップと、を含む方法。
JP11186108A 1998-06-30 1999-06-30 マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ Pending JP2000040075A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US09/107,973 US6247143B1 (en) 1998-06-30 1998-06-30 I/O handling for a multiprocessor computer system
US09/106,883 US6327668B1 (en) 1998-06-30 1998-06-30 Determinism in a multiprocessor computer system and monitor and processor therefor
US09/106,882 US6256753B1 (en) 1998-06-30 1998-06-30 Bus error handling in a computer system
US09/106883 1998-06-30

Publications (2)

Publication Number Publication Date
JP2000040075A true JP2000040075A (ja) 2000-02-08
JP2000040075A5 JP2000040075A5 (ja) 2005-04-28

Family

ID=40944907

Family Applications (3)

Application Number Title Priority Date Filing Date
JP11186108A Pending JP2000040075A (ja) 1998-06-30 1999-06-30 マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ
JP11186562A Pending JP2000040073A (ja) 1998-06-30 1999-06-30 マルチプロセッサ・コンピュ―タ・システムのためのi/o処理
JP11186088A Pending JP2000040038A (ja) 1998-06-30 1999-06-30 コンピュ―タ・システムにおけるバス・エラ―処理

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP11186562A Pending JP2000040073A (ja) 1998-06-30 1999-06-30 マルチプロセッサ・コンピュ―タ・システムのためのi/o処理
JP11186088A Pending JP2000040038A (ja) 1998-06-30 1999-06-30 コンピュ―タ・システムにおけるバス・エラ―処理

Country Status (3)

Country Link
US (4) US6256753B1 (ja)
EP (3) EP0969372A3 (ja)
JP (3) JP2000040075A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542878A (ja) * 2005-05-24 2008-11-27 マラソン テクノロジーズ コーポレイション 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム
JP2009238068A (ja) * 2008-03-28 2009-10-15 Fujitsu Ltd 通信制御装置、通信制御方法
JP2014059870A (ja) * 2012-09-14 2014-04-03 General Electric Co <Ge> プロセッサの命令実行の同期システムおよび方法

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6587961B1 (en) * 1998-06-15 2003-07-01 Sun Microsystems, Inc. Multi-processor system bridge with controlled access
US6499048B1 (en) 1998-06-30 2002-12-24 Sun Microsystems, Inc. Control of multiple computer processes using a mutual exclusion primitive ordering mechanism
US7996843B2 (en) 1999-08-25 2011-08-09 Qnx Software Systems Gmbh & Co. Kg Symmetric multi-processor system
US6732300B1 (en) * 2000-02-18 2004-05-04 Lev Freydel Hybrid triple redundant computer system
US6643727B1 (en) * 2000-06-08 2003-11-04 International Business Machines Corporation Isolation of I/O bus errors to a single partition in an LPAR environment
US7908520B2 (en) * 2000-06-23 2011-03-15 A. Avizienis And Associates, Inc. Self-testing and -repairing fault-tolerance infrastructure for computer systems
WO2002073230A2 (en) * 2001-03-14 2002-09-19 Mercury Computer Systems, Inc. Wireless communications methods and systems for short-code and other spread spectrum waveform processing
US6938183B2 (en) * 2001-09-21 2005-08-30 The Boeing Company Fault tolerant processing architecture
US7114157B2 (en) * 2001-11-27 2006-09-26 Kuka Roboter Gmbh System controlling exclusive access by control programs to system resources
US7020800B2 (en) * 2002-01-24 2006-03-28 Hewlett-Packard Development Company L.P. System and method for memory failure recovery using lockstep processes
GB2399913B (en) * 2002-03-19 2004-12-15 Sun Microsystems Inc Fault tolerant computer system
US7185341B2 (en) * 2002-03-28 2007-02-27 International Business Machines Corporation System and method for sharing PCI bus devices
US7159148B2 (en) * 2002-06-11 2007-01-02 Motorola, Inc. Method for performance and fault management in a telecommunication network
JP2004046599A (ja) * 2002-07-12 2004-02-12 Nec Corp フォルトトレラントコンピュータ装置、その再同期化方法及び再同期化プログラム
DE10251912A1 (de) * 2002-11-07 2004-05-19 Siemens Ag Synchronisation der Datenverarbeitung in redundanten Datenverarbeitungseinheiten eines Datenverarbeitungssystems
US8005503B2 (en) * 2002-12-18 2011-08-23 Broadcom Corporation Synchronization of multiple processors in a multi-mode wireless communication device
FR2849226B1 (fr) * 2002-12-20 2005-12-02 Oberthur Card Syst Sa Procede et dispositif de securisation de l'execution d'un programme informatique.
JP4155088B2 (ja) * 2003-04-18 2008-09-24 日本電気株式会社 情報処理装置
US7398359B1 (en) * 2003-04-30 2008-07-08 Silicon Graphics, Inc. System and method for performing memory operations in a computing system
US7159101B1 (en) * 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
DE10328059A1 (de) * 2003-06-23 2005-01-13 Robert Bosch Gmbh Verfahren und Vorrichtung zur Überwachung eines verteilten Systems
DE10331873B4 (de) * 2003-07-14 2022-09-01 Robert Bosch Gmbh Verfahren zur Überwachung verteilter Software
US8984199B2 (en) * 2003-07-31 2015-03-17 Intel Corporation Inter-processor interrupts
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
DE102004032405A1 (de) * 2004-07-03 2006-02-09 Diehl Bgt Defence Gmbh & Co. Kg Weltraum-taugliche Rechnerarchitektur
US7047440B1 (en) * 2004-07-27 2006-05-16 Freydel Lev R Dual/triple redundant computer system
RU2007119322A (ru) * 2004-10-25 2008-12-10 Роберт Бош ГмбХ (DE) Способ и устройство для переключения в вычислительной системе, включающей в себя по меньшей мере два обрабатывающих блока
DE502005006496D1 (de) 2004-10-25 2009-03-05 Bosch Gmbh Robert Verfahren und vorrichtung zur modusumschaltung und zum signalvergleich bei einem rechnersystem mit wenigstens zwei verarbeitungseinheiten
US7353437B2 (en) * 2004-10-29 2008-04-01 Micron Technology, Inc. System and method for testing a memory for a memory failure exhibited by a failing memory
JP4487756B2 (ja) * 2004-12-16 2010-06-23 日本電気株式会社 コンピュータシステム及びシステム監視プログラム
US7684447B2 (en) * 2004-12-23 2010-03-23 Agilent Technologies, Inc. Sequencer and method for sequencing
US7337367B2 (en) * 2005-01-06 2008-02-26 International Business Machines Corporation Management of memory controller reset
US7467327B2 (en) 2005-01-25 2008-12-16 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by exchanging information about instructions executed
US7328331B2 (en) * 2005-01-25 2008-02-05 Hewlett-Packard Development Company, L.P. Method and system of aligning execution point of duplicate copies of a user program by copying memory stores
GB2425372B (en) * 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
US7933966B2 (en) * 2005-04-26 2011-04-26 Hewlett-Packard Development Company, L.P. Method and system of copying a memory area between processor elements for lock-step execution
US7590885B2 (en) * 2005-04-26 2009-09-15 Hewlett-Packard Development Company, L.P. Method and system of copying memory from a source processor to a target processor by duplicating memory writes
US7174265B2 (en) * 2005-05-13 2007-02-06 International Business Machines Corporation Heterogeneous multipath path network test system
US8527958B2 (en) * 2005-05-16 2013-09-03 Texas Instruments Incorporated Profiling operating context and tracing program on a target processor
US7478307B1 (en) 2005-05-19 2009-01-13 Sun Microsystems, Inc. Method for improving un-correctable errors in a computer system
US7523342B1 (en) 2005-10-28 2009-04-21 Sun Microsystems, Inc. Data and control integrity for transactions in a computer system
US20070220369A1 (en) * 2006-02-21 2007-09-20 International Business Machines Corporation Fault isolation and availability mechanism for multi-processor system
US7870544B2 (en) * 2006-04-05 2011-01-11 International Business Machines Corporation Insuring maximum code motion of accesses to DMA buffers
US8977252B1 (en) * 2006-07-06 2015-03-10 Gryphonet Ltd. System and method for automatic detection and recovery of malfunction in mobile devices
JP5087884B2 (ja) * 2006-08-11 2012-12-05 富士通セミコンダクター株式会社 データ処理ユニット、およびこれを使用したデータ処理装置
US7898937B2 (en) * 2006-12-06 2011-03-01 Cisco Technology, Inc. Voting to establish a new network master device after a network failover
CN101861569B (zh) * 2007-07-24 2014-03-19 通用电气航空系统有限责任公司 高集成度和高可用性计算机处理模块
US7987385B2 (en) 2007-07-24 2011-07-26 Ge Aviation Systems Llc Method for high integrity and high availability computer processing
US8763115B2 (en) * 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
DE102007051803A1 (de) * 2007-10-30 2009-05-07 Infineon Technologies Ag Verfahren und Vorrichtung zur Datenverarbeitung
US8817597B2 (en) * 2007-11-05 2014-08-26 Honeywell International Inc. Efficient triple modular redundancy on a braided ring
JP4475320B2 (ja) * 2007-11-15 2010-06-09 株式会社デンソー 車両用記憶管理装置
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
DE102008043646A1 (de) * 2008-11-11 2010-05-12 Robert Bosch Gmbh Verfahren und System zur Steuerung einer Kommunikation zwischen einem Funktionsrechner und einem Überwachungsmodul
US9191009B1 (en) * 2009-05-07 2015-11-17 Arizona Board Of Regents, For And On Behalf Of Arizona State University Radiation hardened by design digital input/output circuits and related methods
US8135894B1 (en) 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
DE102009054637A1 (de) * 2009-12-15 2011-06-16 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US9052887B2 (en) * 2010-02-16 2015-06-09 Freescale Semiconductor, Inc. Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode
US8499193B2 (en) * 2010-07-30 2013-07-30 Honeywell International Inc. Integrated dissimilar high integrity processing
US8930753B2 (en) * 2010-10-28 2015-01-06 Maxwell Technologies, Inc. System, method and apparatus for error correction in multi-processor systems
US20120222051A1 (en) * 2011-02-25 2012-08-30 Microsoft Corporation Shared resource access verification
KR102028663B1 (ko) * 2012-07-24 2019-10-04 삼성전자주식회사 에러 검출 방법 및 장치
WO2014080245A1 (en) 2012-11-22 2014-05-30 Freescale Semiconductor, Inc. Data processing device, method of execution error detection and integrated circuit
JP5772911B2 (ja) * 2013-09-27 2015-09-02 日本電気株式会社 フォールトトレラントシステム
US9201636B2 (en) * 2013-11-21 2015-12-01 National Tsing Hua University Method for divergence analysis of pointer-based program
US9823983B2 (en) 2014-09-25 2017-11-21 Nxp Usa, Inc. Electronic fault detection unit
JP6554048B2 (ja) * 2016-02-29 2019-07-31 株式会社日立製作所 表示装置
US10089194B2 (en) * 2016-06-08 2018-10-02 Qualcomm Incorporated System and method for false pass detection in lockstep dual core or triple modular redundancy (TMR) systems
DE102016215345A1 (de) * 2016-08-17 2018-02-22 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur redundanten Datenverarbeitung
US10514990B2 (en) * 2017-11-27 2019-12-24 Intel Corporation Mission-critical computing architecture
US10946866B2 (en) 2018-03-31 2021-03-16 Intel Corporation Core tightly coupled lockstep for high functional safety
US11120642B2 (en) 2018-06-27 2021-09-14 Intel Corporation Functional safety critical audio system for autonomous and industrial applications
CN109407970B (zh) * 2018-09-12 2022-02-11 新华三技术有限公司成都分公司 读写请求处理方法、装置及电子设备
US11520297B2 (en) 2019-03-29 2022-12-06 Intel Corporation Enhancing diagnostic capabilities of computing systems by combining variable patrolling API and comparison mechanism of variables
US11250124B2 (en) * 2019-09-19 2022-02-15 Facebook Technologies, Llc Artificial reality system having hardware mutex with process authentication
US11556319B2 (en) * 2020-09-01 2023-01-17 Huawei Technologies Co., Ltd. Systems and methods for extending a live range of a virtual scalar register

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3623011A (en) * 1969-06-25 1971-11-23 Bell Telephone Labor Inc Time-shared access to computer registers
US3763474A (en) * 1971-12-09 1973-10-02 Bell Telephone Labor Inc Program activated computer diagnostic system
SE397013B (sv) 1976-12-17 1977-10-10 Ellemtel Utvecklings Ab Sett och anordning for att overfora datainformationer till tva parallellt arbetande datamaskindelar
WO1983001135A1 (en) * 1981-09-18 1983-03-31 Rovsing As Christian Multiprocessor computer system
DE3235762A1 (de) 1982-09-28 1984-03-29 Fried. Krupp Gmbh, 4300 Essen Verfahren und vorrichtung zur synchronisation von datenverarbeitungsanlagen
US4634110A (en) * 1983-07-28 1987-01-06 Harris Corporation Fault detection and redundancy management system
JPS6123246A (ja) * 1984-07-11 1986-01-31 Nec Corp マルチプロセツサシステムの監視方式
US4628511A (en) * 1984-09-06 1986-12-09 Shell Oil Company Apparatus for analysis of computer channel failures
AU568977B2 (en) * 1985-05-10 1988-01-14 Tandem Computers Inc. Dual processor error detection system
CH675781A5 (ja) 1987-04-16 1990-10-31 Bbc Brown Boveri & Cie
CA2003338A1 (en) 1987-11-09 1990-06-09 Richard W. Cutts, Jr. Synchronization of fault-tolerant computer system having multiple processors
JPH0644261B2 (ja) * 1987-11-13 1994-06-08 富士通株式会社 マルチプロセッサシステムにおけるキャッシュ制御方式
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
JPH01183744A (ja) * 1988-01-14 1989-07-21 Nec Corp プロセッサストール監視装置
JPH01300364A (ja) * 1988-05-30 1989-12-04 Nec Corp マルチプロセッサ方式
AU625293B2 (en) * 1988-12-09 1992-07-09 Tandem Computers Incorporated Synchronization of fault-tolerant computer system having multiple processors
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5068851A (en) * 1989-08-01 1991-11-26 Digital Equipment Corporation Apparatus and method for documenting faults in computing modules
GB2238143A (en) * 1989-10-10 1991-05-22 Univ Essex Voters for fault-tolerant computer systems
US5146461A (en) * 1989-11-13 1992-09-08 Solbourne Computer, Inc. Memory error correction system distributed on a high performance multiprocessor bus and method therefor
US5295258A (en) * 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5161156A (en) * 1990-02-02 1992-11-03 International Business Machines Corporation Multiprocessing packet switching connection system having provision for error correction and recovery
DE69132227T2 (de) * 1990-09-20 2000-09-28 Fujitsu Ltd Eingang-/Ausgangsteuerungseinrichtung
DE4041062A1 (de) * 1990-12-20 1992-07-02 Siemens Ag Ueberwachungsschaltung fuer eine multiprozessoreinrichtung eines geraetes oder einer anlage
US5321813A (en) * 1991-05-01 1994-06-14 Teradata Corporation Reconfigurable, fault tolerant, multistage interconnect network and protocol
US5339404A (en) * 1991-05-28 1994-08-16 International Business Machines Corporation Asynchronous TMR processing system
US5295260A (en) * 1991-05-31 1994-03-15 Cray Research Systems, Inc. Memory range monitoring apparatus for a multiprocessor computer system
JPH0816877B2 (ja) * 1991-06-10 1996-02-21 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システム用資源データの実時間捕獲及び減縮方法及びシステム
US5235602A (en) * 1991-06-11 1993-08-10 International Business Machines Corporation Synchronous/asynchronous i/o channel check and parity check detector
WO1993009494A1 (en) 1991-10-28 1993-05-13 Digital Equipment Corporation Fault-tolerant computer processing using a shadow virtual processor
US5533188A (en) * 1992-10-19 1996-07-02 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Fault-tolerant processing system
EP0596410B1 (en) * 1992-11-04 1999-07-28 Digital Equipment Corporation Detection of command synchronisation error
US6151689A (en) * 1992-12-17 2000-11-21 Tandem Computers Incorporated Detecting and isolating errors occurring in data communication in a multiple processor system
US5675807A (en) * 1992-12-17 1997-10-07 Tandem Computers Incorporated Interrupt message delivery identified by storage location of received interrupt data
US5790776A (en) * 1992-12-17 1998-08-04 Tandem Computers Incorporated Apparatus for detecting divergence between a pair of duplexed, synchronized processor elements
US5513354A (en) * 1992-12-18 1996-04-30 International Business Machines Corporation Fault tolerant load management system and method
US5365526A (en) * 1992-12-18 1994-11-15 Amdahl Corporation Trace system for an I/O channel
DE59302826D1 (de) 1993-03-16 1996-07-11 Siemens Ag Synchronisationsverfahren für Automatisierungssysteme
US5499346A (en) * 1993-05-28 1996-03-12 International Business Machines Corporation Bus-to-bus bridge for a multiple bus information handling system that optimizes data transfers between a system bus and a peripheral bus
WO1995015529A1 (en) 1993-12-01 1995-06-08 Marathon Technologies Corporation Fault resilient/fault tolerant computing
ATE176063T1 (de) * 1994-04-06 1999-02-15 Advanced Micro Devices Inc Parallelschlussschnittstellenschaltkreise in rechnersystemen
FR2730074B1 (fr) * 1995-01-27 1997-04-04 Sextant Avionique Architecture de calculateur tolerante aux fautes
US6105053A (en) * 1995-06-23 2000-08-15 Emc Corporation Operating system for a non-uniform memory access multiprocessor system
US6011791A (en) * 1995-11-15 2000-01-04 Hitachi, Ltd. Multi-processor system and its network
US5737514A (en) * 1995-11-29 1998-04-07 Texas Micro, Inc. Remote checkpoint memory system and protocol for fault-tolerant computer system
US5745672A (en) * 1995-11-29 1998-04-28 Texas Micro, Inc. Main memory system and checkpointing protocol for a fault-tolerant computer system using a read buffer
EP0868692B1 (en) * 1995-12-18 2000-05-03 ABB Automation Inc. Processor independent error checking arrangement
US5758190A (en) * 1996-04-09 1998-05-26 International Business Machines Corporation Control unit threshold timeout controls for software missing interrupt handlers in operating systems
DE19625195A1 (de) 1996-06-24 1998-01-02 Siemens Ag Synchronisationsverfahren
US5991518A (en) * 1997-01-28 1999-11-23 Tandem Computers Incorporated Method and apparatus for split-brain avoidance in a multi-processor system
US5892895A (en) * 1997-01-28 1999-04-06 Tandem Computers Incorporated Method an apparatus for tolerance of lost timer ticks during recovery of a multi-processor system
US6012148A (en) * 1997-01-29 2000-01-04 Unisys Corporation Programmable error detect/mask utilizing bus history stack
US5938775A (en) * 1997-05-23 1999-08-17 At & T Corp. Distributed recovery with κ-optimistic logging
US6154877A (en) * 1997-07-03 2000-11-28 The University Of Iowa Research Foundation Method and apparatus for portable checkpointing using data structure metrics and conversion functions
US6189112B1 (en) * 1998-04-30 2001-02-13 International Business Machines Corporation Transparent processor sparing
US6634019B1 (en) * 1999-07-16 2003-10-14 Lamarck, Inc. Toggling software characteristics in a fault tolerant and combinatorial software environment system, method and medium
JP2001344127A (ja) * 2000-05-31 2001-12-14 Hitachi Ltd システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008542878A (ja) * 2005-05-24 2008-11-27 マラソン テクノロジーズ コーポレイション 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム
JP2009238068A (ja) * 2008-03-28 2009-10-15 Fujitsu Ltd 通信制御装置、通信制御方法
JP2014059870A (ja) * 2012-09-14 2014-04-03 General Electric Co <Ge> プロセッサの命令実行の同期システムおよび方法

Also Published As

Publication number Publication date
US6247143B1 (en) 2001-06-12
EP0969373A2 (en) 2000-01-05
US6327668B1 (en) 2001-12-04
JP2000040038A (ja) 2000-02-08
EP0969373A3 (en) 2003-05-21
US7155704B2 (en) 2006-12-26
EP0969374A2 (en) 2000-01-05
EP0969372A2 (en) 2000-01-05
US20020010880A1 (en) 2002-01-24
EP0969372A3 (en) 2004-05-26
JP2000040073A (ja) 2000-02-08
US6256753B1 (en) 2001-07-03

Similar Documents

Publication Publication Date Title
JP2000040075A (ja) マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ
JP2000040076A (ja) 多重コンピュ―タ・プロセスの制御
US7669079B2 (en) Method and device for switching over in a computer system having at least two execution units
US9052887B2 (en) Fault tolerance of data processing steps operating in either a parallel operation mode or a non-synchronous redundant operation mode
US7178062B1 (en) Methods and apparatus for executing code while avoiding interference
US9823983B2 (en) Electronic fault detection unit
US8090983B2 (en) Method and device for performing switchover operations in a computer system having at least two execution units
US20090044048A1 (en) Method and device for generating a signal in a computer system having a plurality of components
US20070255875A1 (en) Method and Device for Switching Over in a Computer System Having at Least Two Execution Units
US8161362B2 (en) Task management control apparatus and method, having redundant processing comparison
CN107451019B (zh) 处理器核心中的自测试
JP2006164277A (ja) プロセッサにおけるエラー除去装置および方法,プロセッサ
US7568138B2 (en) Method to prevent firmware defects from disturbing logic clocks to improve system reliability
US20080263340A1 (en) Method and Device for Analyzing a Signal from a Computer System Having at Least Two Execution Units
US20090119540A1 (en) Device and method for performing switchover operations in a computer system having at least two execution units
US20160124891A1 (en) Methods and circuits for deadlock avoidance
US20080288758A1 (en) Method and Device for Switching Over in a Computer System Having at Least Two Execution Units
JP2008518300A (ja) 少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置
US20080313384A1 (en) Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units
JP2006309276A (ja) デバッグ機構およびデバッグレジスタ
US11635966B2 (en) Pausing execution of a first machine code instruction with injection of a second machine code instruction in a processor
El-Bayoumi ISO-26262 Compliant Safety-Critical Autonomous Driving Applications: Real-Time Interference-Aware Multicore Architectures
JP2002229811A (ja) 論理分割システムの制御方法
Koser et al. A chip-level redundant threading (CRT) scheme for shared-memory protection
US20150082083A1 (en) Information processing system and information processing method

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040618

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070313

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070314

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070319

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20071106