JP2000040073A - マルチプロセッサ・コンピュ―タ・システムのためのi/o処理 - Google Patents
マルチプロセッサ・コンピュ―タ・システムのためのi/o処理Info
- Publication number
- JP2000040073A JP2000040073A JP11186562A JP18656299A JP2000040073A JP 2000040073 A JP2000040073 A JP 2000040073A JP 11186562 A JP11186562 A JP 11186562A JP 18656299 A JP18656299 A JP 18656299A JP 2000040073 A JP2000040073 A JP 2000040073A
- Authority
- JP
- Japan
- Prior art keywords
- monitor
- processing set
- processing
- processor
- equivalent
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/004—Error avoidance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0721—Error 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/0724—Error 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0745—Error 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1641—Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1654—Error 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1691—Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/183—Error 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/184—Error 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/165—Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1679—Temporal synchronisation or re-synchronisation of redundant processing components at clock signal level
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2268—Logging of test results
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring 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)【要約】
【課題】 プロセッサが非同期で動作するマルチプロセ
ッサ・コンピュータ・システムにおいて、信頼性高く効
率的なI/O動作処理を可能とする。 【解決手段】 フォールト・トレランスを可能にするマ
ルチプロセッサ・コンピュータ・システムは、多数の処
理セット12,14を含む。処理セットの内少なくとも
1つは、第2の処理セットとは非同期に動作可能であ
る。処理セットから出力されるI/O動作を受け取るよ
うにモニタ18を接続し、これらのユニットの不良動作
を識別する。また、モニタは、複数の処理セットが同等
の処理段階にあることを示す出力をこれらの処理セット
から受け取ったときに、当該処理セットに通知すること
により、処理セットの動作を同期化するように動作可能
である。共通のモニタは、処理セットの不良動作を判定
するだけでなく、ユニットから出力されるI/O動作を
監視することにより、これらのユニットを同期化するよ
うに動作可能とすることができる。
ッサ・コンピュータ・システムにおいて、信頼性高く効
率的なI/O動作処理を可能とする。 【解決手段】 フォールト・トレランスを可能にするマ
ルチプロセッサ・コンピュータ・システムは、多数の処
理セット12,14を含む。処理セットの内少なくとも
1つは、第2の処理セットとは非同期に動作可能であ
る。処理セットから出力されるI/O動作を受け取るよ
うにモニタ18を接続し、これらのユニットの不良動作
を識別する。また、モニタは、複数の処理セットが同等
の処理段階にあることを示す出力をこれらの処理セット
から受け取ったときに、当該処理セットに通知すること
により、処理セットの動作を同期化するように動作可能
である。共通のモニタは、処理セットの不良動作を判定
するだけでなく、ユニットから出力されるI/O動作を
監視することにより、これらのユニットを同期化するよ
うに動作可能とすることができる。
Description
【0001】
【発明の属する技術分野】本発明は、マルチプロセッサ
・コンピュータ・システムおよびかかるシステムのため
のプロセッサに関するものである。本発明の特定の用途
は、フォールト・トレラント処理システムにある。
・コンピュータ・システムおよびかかるシステムのため
のプロセッサに関するものである。本発明の特定の用途
は、フォールト・トレラント処理システムにある。
【0002】
【従来の技術】多くの処理システムは、厳格なタイミン
グ様式(regime)にしたがって動作し、その内部
状態を既知のクロックに基づいて変更する。かかる処理
システムの同期的な設計により、大きな有限ステート・
マシン(state machine)が得られる。こ
のマシンの内部状態および出力は、入力がクロックに対
して既知の関係で与えられるのであれば、完全に予測可
能である。この決定論(determinism)は、
チェック用ハードウエアを備え、あるプロセッサの動作
またはプロセッサ集合の動作を、他の同一のプロセッサ
またはプロセッサ集合のそれと比較することにより、フ
ォールト・トレラント・マルチ・コンピュータ・システ
ムの構築を可能とする。チェック用ハードウエアは、各
クロック上における1つ以上の処理セットの出力を比較
することにより、これら処理セットの動作における不良
をチェックするように構成することができる。
グ様式(regime)にしたがって動作し、その内部
状態を既知のクロックに基づいて変更する。かかる処理
システムの同期的な設計により、大きな有限ステート・
マシン(state machine)が得られる。こ
のマシンの内部状態および出力は、入力がクロックに対
して既知の関係で与えられるのであれば、完全に予測可
能である。この決定論(determinism)は、
チェック用ハードウエアを備え、あるプロセッサの動作
またはプロセッサ集合の動作を、他の同一のプロセッサ
またはプロセッサ集合のそれと比較することにより、フ
ォールト・トレラント・マルチ・コンピュータ・システ
ムの構築を可能とする。チェック用ハードウエアは、各
クロック上における1つ以上の処理セットの出力を比較
することにより、これら処理セットの動作における不良
をチェックするように構成することができる。
【0003】他の処理システムは、このように単純には
作動しない。この種の例には、クロックが未知の処理シ
ステム、多数の無関係なクロックを使用するシステム、
またはプロセッサの動作にクロックを全く用いないシス
テムがある。これらの処理システムは、同期有限ステー
ト・マシンとしてモデル化することはできない。これら
の処理システムには、コンピュータの内部状態にいずれ
かの既知の関係で、入力を与えることはできない場合が
ある。これらのマシンの詳細な動作は、非決定性(no
n−deterministic)である。このため
に、同一システム間で動作を比較するためのチェック用
ハードウエアの通常の構築が妨げられる。
作動しない。この種の例には、クロックが未知の処理シ
ステム、多数の無関係なクロックを使用するシステム、
またはプロセッサの動作にクロックを全く用いないシス
テムがある。これらの処理システムは、同期有限ステー
ト・マシンとしてモデル化することはできない。これら
の処理システムには、コンピュータの内部状態にいずれ
かの既知の関係で、入力を与えることはできない場合が
ある。これらのマシンの詳細な動作は、非決定性(no
n−deterministic)である。このため
に、同一システム間で動作を比較するためのチェック用
ハードウエアの通常の構築が妨げられる。
【0004】I/O動作は、処理セットのそれぞれのプ
ロセッサから同じ時点において発生するとは限らない。
その結果、最初に受け取ったI/O動作が有効な場合も
有効でない場合もあり得るので、I/O動作は、受け取
ったときに、単純に外部バスに発行することはできな
い。
ロセッサから同じ時点において発生するとは限らない。
その結果、最初に受け取ったI/O動作が有効な場合も
有効でない場合もあり得るので、I/O動作は、受け取
ったときに、単純に外部バスに発行することはできな
い。
【0005】
【発明が解決しようとする課題】したがって、本発明の
目的は、少なくとも1つのプロセッサまたは一プロセッ
サ集合が、他のプロセッサまたはプロセッサ集合とは非
同期に動作するマルチプロセッサ・システムにおいて、
信頼性高くしかも効率的なI/O動作の処理を可能にす
ることである。
目的は、少なくとも1つのプロセッサまたは一プロセッ
サ集合が、他のプロセッサまたはプロセッサ集合とは非
同期に動作するマルチプロセッサ・システムにおいて、
信頼性高くしかも効率的なI/O動作の処理を可能にす
ることである。
【0006】
【課題を解決するための手段】本発明の特定のおよび好
ましい態様は、特許請求の範囲の独立項および従属項に
明記されている。従属項からの特徴の組み合わせは、適
宜独立項の特徴と組み合わせることができ、請求項には
単に明示的に記載されていないだけである。
ましい態様は、特許請求の範囲の独立項および従属項に
明記されている。従属項からの特徴の組み合わせは、適
宜独立項の特徴と組み合わせることができ、請求項には
単に明示的に記載されていないだけである。
【0007】本発明の一特徴によれば、少なくとも1つ
の処理セットが他の処理セットとは非同期に動作可能な
複数の処理セットを含む、マルチプロセッサ・システム
のためのモニタが提供される。モニタは、処理セットか
ら出力されるI/O動作(オペレーション)を受け取る
ように接続可能であり、I/O動作をバッファし、処理
セットの同等(等価)の動作状態(即ち、同等の動作ま
たは機能)を判定するために、1つの処理セットから出
力されたI/O動作を他の処理セットのためにバッファ
されているI/O動作と比較し、これら処理セットの同
等の動作状態と判定したときにのみ、状態変更I/O動
作を発行するように動作可能である。
の処理セットが他の処理セットとは非同期に動作可能な
複数の処理セットを含む、マルチプロセッサ・システム
のためのモニタが提供される。モニタは、処理セットか
ら出力されるI/O動作(オペレーション)を受け取る
ように接続可能であり、I/O動作をバッファし、処理
セットの同等(等価)の動作状態(即ち、同等の動作ま
たは機能)を判定するために、1つの処理セットから出
力されたI/O動作を他の処理セットのためにバッファ
されているI/O動作と比較し、これら処理セットの同
等の動作状態と判定したときにのみ、状態変更I/O動
作を発行するように動作可能である。
【0008】本発明の一実施形態は、これによって、効
率的にI/O命令に応答し、状態を変更しないI/O動
作(即ち、後に不良が判定された場合、必要に応じて、
破損なくこれらを取り下げることができるI/O動作)
を直接送出し、I/O動作が状態を変更する場合、当該
I/O動作を送出する前に、同等の動作が判定されるま
でこれらをバッファしておくことができる。これによっ
て、本発明の一実施形態は、I/O動作が有効であるこ
とをモニタが確信する場合にのみ、I/O動作をモニタ
から発行することを保証可能にする。反復不可能な状態
変更動作の例として、副作用のあるリード(read)
命令またはライト(write)命令をあげることがで
きる。比較のために、副作用のないリード命令は、処理
セットからの最初の受け取り時に、モニタから直接発行
することができる。
率的にI/O命令に応答し、状態を変更しないI/O動
作(即ち、後に不良が判定された場合、必要に応じて、
破損なくこれらを取り下げることができるI/O動作)
を直接送出し、I/O動作が状態を変更する場合、当該
I/O動作を送出する前に、同等の動作が判定されるま
でこれらをバッファしておくことができる。これによっ
て、本発明の一実施形態は、I/O動作が有効であるこ
とをモニタが確信する場合にのみ、I/O動作をモニタ
から発行することを保証可能にする。反復不可能な状態
変更動作の例として、副作用のあるリード(read)
命令またはライト(write)命令をあげることがで
きる。比較のために、副作用のないリード命令は、処理
セットからの最初の受け取り時に、モニタから直接発行
することができる。
【0009】処理セットの同等の動作状態は、多数決に
よって判定することができる。代わりとして、全ての処
理セットがI/O動作を出力した場合に、処理セットの
同等の動作状態を判定することも可能である。処理セッ
トの同等の動作状態は、監視対称の処理セットの数に応
じて変化するポリシー(policy)にしたがって判
定することも可能である。
よって判定することができる。代わりとして、全ての処
理セットがI/O動作を出力した場合に、処理セットの
同等の動作状態を判定することも可能である。処理セッ
トの同等の動作状態は、監視対称の処理セットの数に応
じて変化するポリシー(policy)にしたがって判
定することも可能である。
【0010】I/O動作をモニタから発行する際、その
制御および順序付けを容易にするために、モニタは、I
/O動作における第1の不変情報に応じて、各I/O動
作毎にバッファを決定し、I/O動作における第2の不
変情報に応じて、識別されたバッファ内におけるI/O
動作の順序を決定し、処理セットに対する、同等のバッ
ファ内の同等の位置のI/O動作における同等の第3の
不変情報に基づいて、処理セットの同等の動作を判定す
る、ように動作可能であることが好ましい。
制御および順序付けを容易にするために、モニタは、I
/O動作における第1の不変情報に応じて、各I/O動
作毎にバッファを決定し、I/O動作における第2の不
変情報に応じて、識別されたバッファ内におけるI/O
動作の順序を決定し、処理セットに対する、同等のバッ
ファ内の同等の位置のI/O動作における同等の第3の
不変情報に基づいて、処理セットの同等の動作を判定す
る、ように動作可能であることが好ましい。
【0011】第1の不変情報は、処理セットを含み、更
に、I/O動作型(タイプ)と、ある処理セット内のプ
ロセッサ番号とから選択したI/O動作の1つ以上のパ
ラメータを含むことが可能である。第2の不変情報は、
アドレス・フェーズの順序付けと、順序番号とから選択
されるI/O動作のパラメータを含むことができる。第
3の不変情報は、ライト値データと、I/Oコマンド
と、アドレスとから選択されるI/O動作の1つ以上の
パラメータを含むことができる。
に、I/O動作型(タイプ)と、ある処理セット内のプ
ロセッサ番号とから選択したI/O動作の1つ以上のパ
ラメータを含むことが可能である。第2の不変情報は、
アドレス・フェーズの順序付けと、順序番号とから選択
されるI/O動作のパラメータを含むことができる。第
3の不変情報は、ライト値データと、I/Oコマンド
と、アドレスとから選択されるI/O動作の1つ以上の
パラメータを含むことができる。
【0012】モニタは、I/O動作の変動情報を無視す
るように構成することも可能である。各処理セットが対
称マルチプロセッサである場合、モニタは、処理セット
のために、mutex(相互排除プリミティブ:mut
ual exclusionprimitive)の同
等の順序付けを保証し、それぞれの処理セットのプロセ
ッサによるそれぞれの資源へのアクセスを制御すること
によって、処理セットの同等の動作状態を維持するよう
に構成することができる。
るように構成することも可能である。各処理セットが対
称マルチプロセッサである場合、モニタは、処理セット
のために、mutex(相互排除プリミティブ:mut
ual exclusionprimitive)の同
等の順序付けを保証し、それぞれの処理セットのプロセ
ッサによるそれぞれの資源へのアクセスを制御すること
によって、処理セットの同等の動作状態を維持するよう
に構成することができる。
【0013】本発明の別の態様によれば、フォールト・
トレラント・マルチプロセッサ・コンピュータ・システ
ムが提供され、このシステムは、複数の処理セットであ
って、少なくとも第1の処理セットが第2の処理セット
とは非同期に動作可能な、処理セットと、前述のような
モニタとを備える。
トレラント・マルチプロセッサ・コンピュータ・システ
ムが提供され、このシステムは、複数の処理セットであ
って、少なくとも第1の処理セットが第2の処理セット
とは非同期に動作可能な、処理セットと、前述のような
モニタとを備える。
【0014】本発明の更に別の態様によれば、少なくと
も第1の処理セットが第2の処理セットとは非同期に動
作可能な複数の処理セットと、処理セットから出力され
るI/O動作を受け取るように接続されたモニタとを備
えたフォールト・トレラント・マルチプロセッサ・コン
ピュータ・システムの動作方法が提供され、この方法
は、I/O動作をバッファするステップと、処理セット
の動作状態を判定するために、1つの処理セットから出
力されたI/O動作を、他の処理セットのためにバッフ
ァされたI/O動作と比較するステップと、処理セット
の同等の動作状態を判定したときのみ、状態変更I/O
動作を発行するステップとから成る。
も第1の処理セットが第2の処理セットとは非同期に動
作可能な複数の処理セットと、処理セットから出力され
るI/O動作を受け取るように接続されたモニタとを備
えたフォールト・トレラント・マルチプロセッサ・コン
ピュータ・システムの動作方法が提供され、この方法
は、I/O動作をバッファするステップと、処理セット
の動作状態を判定するために、1つの処理セットから出
力されたI/O動作を、他の処理セットのためにバッフ
ァされたI/O動作と比較するステップと、処理セット
の同等の動作状態を判定したときのみ、状態変更I/O
動作を発行するステップとから成る。
【0015】
【発明の実施の形態】図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を有す
る、複数のモニタ・ユニットを備えてもよい。
ピュータ・システム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を有す
る、複数のモニタ・ユニットを備えてもよい。
【0016】I/Oモニタ・ユニット(モニタ)18
は、個々のプロセッサ・ユニット12,14,16間の
動作の相違を検出し、1つ以上のこれら処理セット1
2,14,16の不良動作を判定するように構成されて
いる。
は、個々のプロセッサ・ユニット12,14,16間の
動作の相違を検出し、1つ以上のこれら処理セット1
2,14,16の不良動作を判定するように構成されて
いる。
【0017】2つより多い処理セットが備えられている
場合、モニタ・ユニットは、これら処理セット間の動作
の相違を検出することができ、多数決を採用して不良
(故障)処理セットを識別し、これを無視することがで
きる。2つだけの処理セットを用いる場合、または1つ
以上の処理セットを排除した後動作可能な状態で残った
有効な処理セットが2つのみとなった場合、これら処理
セット間の動作の相違は、これら処理セットの一方の不
良動作を知らせることができるが、これらの処理セット
のどちらが不良かを識別するのは、単に多数決を採用す
るよりも、一層複雑な作業となる可能性がある。
場合、モニタ・ユニットは、これら処理セット間の動作
の相違を検出することができ、多数決を採用して不良
(故障)処理セットを識別し、これを無視することがで
きる。2つだけの処理セットを用いる場合、または1つ
以上の処理セットを排除した後動作可能な状態で残った
有効な処理セットが2つのみとなった場合、これら処理
セット間の動作の相違は、これら処理セットの一方の不
良動作を知らせることができるが、これらの処理セット
のどちらが不良かを識別するのは、単に多数決を採用す
るよりも、一層複雑な作業となる可能性がある。
【0018】図1に示す構成は、同期動作マルチプロセ
ッサ・システムにすることができる。この場合、個々の
処理セット12,14,16は同期的に動作しているの
で、これらは同時に同じI/O出力を与えることにな
り、したがって、モニタ・ユニット18がこれらの出力
を比較して、プロセッサが未だ同期状態にあるか否かに
ついて判定することは簡単な事である。
ッサ・システムにすることができる。この場合、個々の
処理セット12,14,16は同期的に動作しているの
で、これらは同時に同じI/O出力を与えることにな
り、したがって、モニタ・ユニット18がこれらの出力
を比較して、プロセッサが未だ同期状態にあるか否かに
ついて判定することは簡単な事である。
【0019】また、図1に示す構成は、処理セット1
2,14,16が同期的に動作していない、または完全
には同期的に動作していないシステムにも適用される。
この場合、処理セット12,14,16の同等の動作状
態(operating)(即ち、同等の動作(ope
ration)または機能)を判定するために、モニタ
・ユニット18によって、どのI/O出力を比較する必
要があるか、およびいつそれらを比較する必要があるか
について決定する際に、難題が生ずる。
2,14,16が同期的に動作していない、または完全
には同期的に動作していないシステムにも適用される。
この場合、処理セット12,14,16の同等の動作状
態(operating)(即ち、同等の動作(ope
ration)または機能)を判定するために、モニタ
・ユニット18によって、どのI/O出力を比較する必
要があるか、およびいつそれらを比較する必要があるか
について決定する際に、難題が生ずる。
【0020】簡単に言えば、非同期システムの場合、モ
ニタ・ユニット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動作を渡し、
動作速度を高めることができる。フォールト・トレラン
ト処理環境において、サイクルが間違いであったとシス
テムが最終的に判断した場合でも害はなく、最適化によ
って高速化が可能となる。
ニタ・ユニット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動作を渡し、
動作速度を高めることができる。フォールト・トレラン
ト処理環境において、サイクルが間違いであったとシス
テムが最終的に判断した場合でも害はなく、最適化によ
って高速化が可能となる。
【0021】図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バス・コ
ントローラを有する場合もある。
処理セットに可能な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バス・コ
ントローラを有する場合もある。
【0022】図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の同期の度合いを選択的に制御するようにも動
作可能である。
略全体像である。図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の同期の度合いを選択的に制御するようにも動
作可能である。
【0023】この「同期の度合い」は、同期クロックを
必要とせずに、処理セット12,14等のプロセッサ
(または、複数のプロセッサ)30を選択的にストール
(stall)させることに基づく。これを行うには、
各プロセッサが進行表示(progress indi
cation)を与え、処理がどこまで進んだかについ
ての通知をモニタが行うことを可能とする。遠い過去に
おいて、プロセッサは、各命令の完了時に、パルスを出
力するように構成されていた。しかしながら、これはも
はや適切でない。今日では、命令は、外部に知らせるこ
とができるよりも速く完了する。また、アウト・オブ・
オーダ(out−of−order)の性質が、命令が
いつ完了したかを正確に判断することを難しくしてい
る。完了とは、当該命令自体が終了したときなのか、あ
るいは当該命令および以前の命令全てが終了したときな
のか。このような煩雑さのために、一層精巧化した進行
表示が必要である。
必要とせずに、処理セット12,14等のプロセッサ
(または、複数のプロセッサ)30を選択的にストール
(stall)させることに基づく。これを行うには、
各プロセッサが進行表示(progress indi
cation)を与え、処理がどこまで進んだかについ
ての通知をモニタが行うことを可能とする。遠い過去に
おいて、プロセッサは、各命令の完了時に、パルスを出
力するように構成されていた。しかしながら、これはも
はや適切でない。今日では、命令は、外部に知らせるこ
とができるよりも速く完了する。また、アウト・オブ・
オーダ(out−of−order)の性質が、命令が
いつ完了したかを正確に判断することを難しくしてい
る。完了とは、当該命令自体が終了したときなのか、あ
るいは当該命令および以前の命令全てが終了したときな
のか。このような煩雑さのために、一層精巧化した進行
表示が必要である。
【0024】進行表示は、他のプロセッサとの歩調が外
れ過ぎないように、あるプロセッサの速度を低下させる
ために、モニタによって用いられる。このために、プロ
セッサも、モニタがそれらをストールすることを可能に
する何らかの方法を備える必要がある。
れ過ぎないように、あるプロセッサの速度を低下させる
ために、モニタによって用いられる。このために、プロ
セッサも、モニタがそれらをストールすることを可能に
する何らかの方法を備える必要がある。
【0025】図4は、あるプロセッサのストールによっ
て、他のプロセッサに追いつかせる様子を示すタイミン
グ図である。図4において、時間は左から右に経過して
いく。第1の高速プロセッサP1が40において進行表
示を発行し、外部モニタからストール指示を受け取らな
ければ、処理し続けることを許される。モニタから第1
のプロセッサP1へのストール指示の返送に応答して、
第2の低速プロセッサP2によって進行表示が42にお
いて供給されるまで、このプロセッサP1はストールす
る(ブロック・シンボルによって表すように)。次い
で、第1のプロセッサは、44においてモニタからの解
放を受け取ったときに、先に進むことを許される。
て、他のプロセッサに追いつかせる様子を示すタイミン
グ図である。図4において、時間は左から右に経過して
いく。第1の高速プロセッサP1が40において進行表
示を発行し、外部モニタからストール指示を受け取らな
ければ、処理し続けることを許される。モニタから第1
のプロセッサP1へのストール指示の返送に応答して、
第2の低速プロセッサP2によって進行表示が42にお
いて供給されるまで、このプロセッサP1はストールす
る(ブロック・シンボルによって表すように)。次い
で、第1のプロセッサは、44においてモニタからの解
放を受け取ったときに、先に進むことを許される。
【0026】進行表示は、これらの時間間隔がほぼ一定
となって、電気的通知が実用的でなくなるような速度で
出されないように、そして進行表示が決定論的に(de
terministically)実行される命令に関
係するように、発生しなければならない。ストール命令
については、外部電子回路がストールを要求することま
たはストールの要求をやめることのいずれにおいても、
例外的に速くなる必要がないことが望ましい。外部電子
回路がストールを要求しない場合、プロセッサを遅くす
る必要は全くない。しかしながら、ストールが要求され
た場合、プロセッサは正確な状態で停止し、ストールさ
れた命令までの全ての命令を退却し、それを越える命令
は発行しないようにしなければならない。
となって、電気的通知が実用的でなくなるような速度で
出されないように、そして進行表示が決定論的に(de
terministically)実行される命令に関
係するように、発生しなければならない。ストール命令
については、外部電子回路がストールを要求することま
たはストールの要求をやめることのいずれにおいても、
例外的に速くなる必要がないことが望ましい。外部電子
回路がストールを要求しない場合、プロセッサを遅くす
る必要は全くない。しかしながら、ストールが要求され
た場合、プロセッサは正確な状態で停止し、ストールさ
れた命令までの全ての命令を退却し、それを越える命令
は発行しないようにしなければならない。
【0027】適切な進行表示を与える機構の一例は、各
N個の命令毎に1つの出力をアサート(assert)
することである。ここで、Nはある固定数(あるいは、
プログラム可能な数としてもよい)の命令である。これ
は、命令カウンタを備え、各N個の命令毎に進行表示を
出力することによって、行うことができる。これは、全
ての命令がほぼ同時に実行する場合には、うまくいく。
命令の実行時間が異なる場合、または外部通信(I/O
リード動作のような)によっていくつかの命令が延長す
る場合、この単純な機構は、進行表示の間に時間間隔を
与える可能性があり、これは余りに変動量が多く便利で
ない。
N個の命令毎に1つの出力をアサート(assert)
することである。ここで、Nはある固定数(あるいは、
プログラム可能な数としてもよい)の命令である。これ
は、命令カウンタを備え、各N個の命令毎に進行表示を
出力することによって、行うことができる。これは、全
ての命令がほぼ同時に実行する場合には、うまくいく。
命令の実行時間が異なる場合、または外部通信(I/O
リード動作のような)によっていくつかの命令が延長す
る場合、この単純な機構は、進行表示の間に時間間隔を
与える可能性があり、これは余りに変動量が多く便利で
ない。
【0028】進行表示を与える機構を一層精巧化するこ
とにより、実状態(real state)に応じて命
令のカウントを変化させることが可能となる。これは、
命令のタイミングの変動を考慮し、進行表示間の間隔を
ほぼ一定にすることができる。
とにより、実状態(real state)に応じて命
令のカウントを変化させることが可能となる。これは、
命令のタイミングの変動を考慮し、進行表示間の間隔を
ほぼ一定にすることができる。
【0029】尚、「実状態」と言う場合、これは、ある
種の制約を受ける、プログラマが視認可能な状態を含む
と理解することとする。したがって、これは、プログラ
ム・カウンタを含む固定のレジスタ集合および主メモリ
の内容を含むが、キャッシュや中間パイプライン値のよ
うな一時的要素は除外する。「実状態」は、プロセス
と、例えば、オペレーティング・システムのステータス
・データとの間のコンテキスト(文脈)切り換えに必要
な全てのデータを含む。
種の制約を受ける、プログラマが視認可能な状態を含む
と理解することとする。したがって、これは、プログラ
ム・カウンタを含む固定のレジスタ集合および主メモリ
の内容を含むが、キャッシュや中間パイプライン値のよ
うな一時的要素は除外する。「実状態」は、プロセス
と、例えば、オペレーティング・システムのステータス
・データとの間のコンテキスト(文脈)切り換えに必要
な全てのデータを含む。
【0030】図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は、プログラム可能と
するとよい。
す。図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は、プログラム可能と
するとよい。
【0031】命令−カウント変換器61は、格納した状
態情報を含むことができる。これの1つを適用例は、ま
ず、特定の命令のソフトウエア・エミュレーション(s
oftware emulation)を考慮する。変
換器61が、ある命令を実行する代わりにエミュレート
することを(例えば、命令タイプ情報から)検出した場
合、内部フラグをセットして、もはや命令をカウントし
てはならないことを示す。これは、0の減分値を生成す
るのと同等である。変換器61がエミュレーション・ル
ーチンの終了時に、エミュレーションから戻る命令を発
見した場合、エミュレートされた命令に対して減分値を
生成する。これは内部で計算することができ、あるいは
エミュレーション・ルーチン内の特殊コードによって与
えることもできる。このように、何らかの命令をエミュ
レートするプロセッサは、比較の目的のために、それら
を全てハードウエアで実行するプロセッサと同等とする
ことができる。
態情報を含むことができる。これの1つを適用例は、ま
ず、特定の命令のソフトウエア・エミュレーション(s
oftware emulation)を考慮する。変
換器61が、ある命令を実行する代わりにエミュレート
することを(例えば、命令タイプ情報から)検出した場
合、内部フラグをセットして、もはや命令をカウントし
てはならないことを示す。これは、0の減分値を生成す
るのと同等である。変換器61がエミュレーション・ル
ーチンの終了時に、エミュレーションから戻る命令を発
見した場合、エミュレートされた命令に対して減分値を
生成する。これは内部で計算することができ、あるいは
エミュレーション・ルーチン内の特殊コードによって与
えることもできる。このように、何らかの命令をエミュ
レートするプロセッサは、比較の目的のために、それら
を全てハードウエアで実行するプロセッサと同等とする
ことができる。
【0032】キャリー出力65は、進行コントローラ6
6によって用いられ、進行指標67を与えることができ
る。これは、プロセッサから、信号ワイヤ上のパルスま
たはステップとして出力される。あるいは、キャリー出
力は、進行コントローラ66に導出し、プロセッサのI
/Oバス上でスケジュールされる特殊進行表示I/Oサ
イクルを発行することができる。例えば、プロセッサ
は、各進行表示毎に、I/Oバス上に特殊リード・サイ
クルを発行することができる。これを概略的に図6に示
す。
6によって用いられ、進行指標67を与えることができ
る。これは、プロセッサから、信号ワイヤ上のパルスま
たはステップとして出力される。あるいは、キャリー出
力は、進行コントローラ66に導出し、プロセッサのI
/Oバス上でスケジュールされる特殊進行表示I/Oサ
イクルを発行することができる。例えば、プロセッサ
は、各進行表示毎に、I/Oバス上に特殊リード・サイ
クルを発行することができる。これを概略的に図6に示
す。
【0033】図6に移る前に、ブロック68を図5に示
していることに注意すべきであろう。これは、送出/肯
定応答インディケータ68(図5参照)であり、その目
的および動作については以下で説明する。
していることに注意すべきであろう。これは、送出/肯
定応答インディケータ68(図5参照)であり、その目
的および動作については以下で説明する。
【0034】図6は、タイミング図であり、時間は左か
ら右に進んでいく。図6は、内部進行表示1001を表
し、その結果として、プロセッサが特殊進行表示I/O
要求1002を発行する。後のある時点において、モニ
タ18は1003によって応答する。後に、プロセッサ
は別の内部進行表示1004を発生し、これが外部で他
のサイクルをトリガする。このシステムを用いると、プ
ロセッサを自動的にストールすることが可能になる。プ
ロセッサが応答1003を受け取る前に進行表示100
4を発行できないように設計する場合、モニタ18は、
単に1003の送出を遅らせることによって、プロセッ
サをストールする効果を有することができる。1003
が1004の前に適当に到達するのであれば、プロセッ
サは最大速度で実行する。1003を遅らせると、10
04を自在に延期することができる。したがって、図6
に表す構成では、速度が異なる2つのプロセッサは、そ
の進行の歩調を合わせた状態に維持することができる。
ら右に進んでいく。図6は、内部進行表示1001を表
し、その結果として、プロセッサが特殊進行表示I/O
要求1002を発行する。後のある時点において、モニ
タ18は1003によって応答する。後に、プロセッサ
は別の内部進行表示1004を発生し、これが外部で他
のサイクルをトリガする。このシステムを用いると、プ
ロセッサを自動的にストールすることが可能になる。プ
ロセッサが応答1003を受け取る前に進行表示100
4を発行できないように設計する場合、モニタ18は、
単に1003の送出を遅らせることによって、プロセッ
サをストールする効果を有することができる。1003
が1004の前に適当に到達するのであれば、プロセッ
サは最大速度で実行する。1003を遅らせると、10
04を自在に延期することができる。したがって、図6
に表す構成では、速度が異なる2つのプロセッサは、そ
の進行の歩調を合わせた状態に維持することができる。
【0035】図7もタイミング図であり、時間は左から
右に進んでいく。図示のように、内部進行表示3001
の後、速い方のプロセッサ3000は特殊進行インディ
ケータI/Oサイクル要求3002を発行する。これ
は、遅い方のプロセッサ2000が、内部進行表示20
01に続いて、その同等の要求2002を発行する前で
ある。モニタ18は要求2002,3002双方を観察
するまで、応答2003,3003の発行を控える。こ
れによって、プロセッサ3000は、内部進行表示30
04を発行できる状態に進行することを禁止され、両プ
ロセッサの歩調を合わせることになる。
右に進んでいく。図示のように、内部進行表示3001
の後、速い方のプロセッサ3000は特殊進行インディ
ケータI/Oサイクル要求3002を発行する。これ
は、遅い方のプロセッサ2000が、内部進行表示20
01に続いて、その同等の要求2002を発行する前で
ある。モニタ18は要求2002,3002双方を観察
するまで、応答2003,3003の発行を控える。こ
れによって、プロセッサ3000は、内部進行表示30
04を発行できる状態に進行することを禁止され、両プ
ロセッサの歩調を合わせることになる。
【0036】応答2003,3003と共に、モニタは
割り込み情報を送ることができる。これは、単純な1ビ
ット割り込み要求とすることができ、あるいは、割り込
みデータのパケット全体とすることもできる。プロセッ
サはこれを用いて、それが割り込みを行うのかあるいは
通常の処理を続けるのかについて判定することができ
る。プロセッサが内部進行表示に関連する正確な命令に
おいてのみ割り込みを行うように設計されている場合、
要求された割り込みはいずれも、進行表示2004の時
点ではプロセッサ2000によって行われ、3004の
時点ではプロセッサ3000によって行われる。ロック
ステップ・プロセッサ(lockstepproces
sor)では、これはプロセッサ2000,3000上
で正確に同じ命令の時点で行われる。モニタは、進行表
示の歩調を合わせるように作用し、双方のプロセッサが
曖昧さなく同じ進行表示上で割り込みを行うことを確実
にすることができる。プロセッサ自体は、進行表示の決
定性送出を保証し、それらの実状態によってのみ影響を
受ける。
割り込み情報を送ることができる。これは、単純な1ビ
ット割り込み要求とすることができ、あるいは、割り込
みデータのパケット全体とすることもできる。プロセッ
サはこれを用いて、それが割り込みを行うのかあるいは
通常の処理を続けるのかについて判定することができ
る。プロセッサが内部進行表示に関連する正確な命令に
おいてのみ割り込みを行うように設計されている場合、
要求された割り込みはいずれも、進行表示2004の時
点ではプロセッサ2000によって行われ、3004の
時点ではプロセッサ3000によって行われる。ロック
ステップ・プロセッサ(lockstepproces
sor)では、これはプロセッサ2000,3000上
で正確に同じ命令の時点で行われる。モニタは、進行表
示の歩調を合わせるように作用し、双方のプロセッサが
曖昧さなく同じ進行表示上で割り込みを行うことを確実
にすることができる。プロセッサ自体は、進行表示の決
定性送出を保証し、それらの実状態によってのみ影響を
受ける。
【0037】このように進められる割り込みは、プロセ
ッサが割り込みルーチンを実行し始める前に、2回程進
行表示を遅らせることができる。この遅延が容認できな
いパフォーマンスを生じないように構成することが望ま
しい。
ッサが割り込みルーチンを実行し始める前に、2回程進
行表示を遅らせることができる。この遅延が容認できな
いパフォーマンスを生じないように構成することが望ま
しい。
【0038】プロセッサ2000が進行表示2004に
近づくと、2004によって暗示される正確な命令を越
えて、命令を発行し始めたいということも当然あり得
る。命令は、速度のためにアウト・オブ・オーダを実行
する。この正確な命令の時点で正確な割り込みモデルを
与えるためには、これを許すことはできない。これは、
プロセッサの低速化を招くことになる。これを回避する
ためには、応答2003が既に受け取られ、プロセッサ
が2004において割り込みが行われないことを既に知
ったときに、この制約を無視するように設計することが
できればよい。したがって、2003が2004よりも
十分に早く発生すれば、プロセッサは最高速度で継続す
る。これによって、プロセッサの動作速度には独立し
て、プロセッサを不必要に遅くすることなく、決定性命
令の時点において正確に割り込みを送出する機構を備え
る。これは正に非同期ロックステップ・システムにおい
て必要とされていることである。
近づくと、2004によって暗示される正確な命令を越
えて、命令を発行し始めたいということも当然あり得
る。命令は、速度のためにアウト・オブ・オーダを実行
する。この正確な命令の時点で正確な割り込みモデルを
与えるためには、これを許すことはできない。これは、
プロセッサの低速化を招くことになる。これを回避する
ためには、応答2003が既に受け取られ、プロセッサ
が2004において割り込みが行われないことを既に知
ったときに、この制約を無視するように設計することが
できればよい。したがって、2003が2004よりも
十分に早く発生すれば、プロセッサは最高速度で継続す
る。これによって、プロセッサの動作速度には独立し
て、プロセッサを不必要に遅くすることなく、決定性命
令の時点において正確に割り込みを送出する機構を備え
る。これは正に非同期ロックステップ・システムにおい
て必要とされていることである。
【0039】I/Oバス上で特殊進行表示I/Oサイク
ルを実行する代わりに、異なる通知手段を、基本的に同
じプロトコルのために使用することができる。I/Oバ
スとは別個のワイヤが、プロセッサの特殊サイクル要求
をモニタに搬送し、応答を返送することができる。これ
によって、I/Oバスの帯域幅を浪費することなく、進
行表示の間隔を短くすることができる。必要であれば、
プロセッサは、割り込み要求を送りだした後に、特殊I
/Oサイクルを実行し、割り込みデータのパケットを取
り込むことができる。
ルを実行する代わりに、異なる通知手段を、基本的に同
じプロトコルのために使用することができる。I/Oバ
スとは別個のワイヤが、プロセッサの特殊サイクル要求
をモニタに搬送し、応答を返送することができる。これ
によって、I/Oバスの帯域幅を浪費することなく、進
行表示の間隔を短くすることができる。必要であれば、
プロセッサは、割り込み要求を送りだした後に、特殊I
/Oサイクルを実行し、割り込みデータのパケットを取
り込むことができる。
【0040】フォールト・トレラント・システムでは、
モニタは、進行表示が失われるという、可能性のある問
題に対処するように構成される。進行表示間の時間に、
上限を設定する。いずれの特定のインプリメンテーショ
ンにおいて選択される上限も、プロセッサ速度の変動に
基づくことができ、プロセッサの通常速度の倍数として
定義することができる。上限は、典型的に、進行表示間
の通常の時間の関数として定義される。したがって、進
行表示同士が1μs離れている場合、上限は2μsとす
ることができる。進行表示同士が100ms離れている
場合、上限は200msとすることができる。これが意
味するのは、モニタは、進行表示が到達しない場合に、
回復処置を開始する前に、2μsの代わりに少なくとも
200ms待たなければならないということである。こ
れは、進行表示の間隔は、短く明確であることが望まし
いということを示すものである。
モニタは、進行表示が失われるという、可能性のある問
題に対処するように構成される。進行表示間の時間に、
上限を設定する。いずれの特定のインプリメンテーショ
ンにおいて選択される上限も、プロセッサ速度の変動に
基づくことができ、プロセッサの通常速度の倍数として
定義することができる。上限は、典型的に、進行表示間
の通常の時間の関数として定義される。したがって、進
行表示同士が1μs離れている場合、上限は2μsとす
ることができる。進行表示同士が100ms離れている
場合、上限は200msとすることができる。これが意
味するのは、モニタは、進行表示が到達しない場合に、
回復処置を開始する前に、2μsの代わりに少なくとも
200ms待たなければならないということである。こ
れは、進行表示の間隔は、短く明確であることが望まし
いということを示すものである。
【0041】図8は、図6および図7を参照して説明し
たように設定した個々の処理の選択的同期を可能にする
ための、図5に示した種々のエレメントの動作および相
互関係を示すフロー図である。
たように設定した個々の処理の選択的同期を可能にする
ための、図5に示した種々のエレメントの動作および相
互関係を示すフロー図である。
【0042】即ち、ある命令が発行されると、ステップ
72において変換器61による命令カウント値の判定に
続いて、ステップ74においてディクリメンタ64を更
新することができる。図5にはディクリメンタ64を示
したが、他の実施態様では、正方向に変化するカウン
タ、例えば、モジュロ−nカウンタを代わりに用いるこ
ともできる。
72において変換器61による命令カウント値の判定に
続いて、ステップ74においてディクリメンタ64を更
新することができる。図5にはディクリメンタ64を示
したが、他の実施態様では、正方向に変化するカウン
タ、例えば、モジュロ−nカウンタを代わりに用いるこ
ともできる。
【0043】ステップ76において、ディクリメンタ6
4がアンダーフローを起こさなかった場合、次の命令の
ために制御はステップ72に戻る。しかしながら、ディ
クリメンタがアンダーフローを起こした場合、ステップ
78において検査を行い、前の進行表示に対する肯定応
答が受け取られているか否かについて判定を行う。前の
進行表示に対する肯定応答が受け取られている場合、ス
テップ86において進行表示をモニタ・ユニットに送
り、送出/肯定応答インディケータ68(図5参照)を
進行コントローラ66内にセットし、進行表示が送られ
たことを示すが、肯定応答は受け取られていない。次
に、制御はステップ71に戻り、ディクリメンタ64を
初期化する。
4がアンダーフローを起こさなかった場合、次の命令の
ために制御はステップ72に戻る。しかしながら、ディ
クリメンタがアンダーフローを起こした場合、ステップ
78において検査を行い、前の進行表示に対する肯定応
答が受け取られているか否かについて判定を行う。前の
進行表示に対する肯定応答が受け取られている場合、ス
テップ86において進行表示をモニタ・ユニットに送
り、送出/肯定応答インディケータ68(図5参照)を
進行コントローラ66内にセットし、進行表示が送られ
たことを示すが、肯定応答は受け取られていない。次
に、制御はステップ71に戻り、ディクリメンタ64を
初期化する。
【0044】ステップ78において、送出/肯定応答イ
ンディケータ68がまだセットされていると判定された
場合、進行表示が送られたことを示すが、それに対する
肯定応答(ACK)が未だ受け取られていないので、ス
テップ80においてプロセッサをストールする。ステッ
プ82において、送出/肯定応答指示68が再度セット
され、以前に送られた進行表示に対する承認(肯定応
答)が受け取られたことを示すと判断されるまで、プロ
セッサをストールしたままとしておく。この時点で、ス
テップ84において、プロセッサを解放する。次に、制
御はステップ86に移り、次の進行表示を送り、送出/
肯定応答インディケータ68を再度セットする。次い
で、制御は次の命令のためにステップ72に戻る。
ンディケータ68がまだセットされていると判定された
場合、進行表示が送られたことを示すが、それに対する
肯定応答(ACK)が未だ受け取られていないので、ス
テップ80においてプロセッサをストールする。ステッ
プ82において、送出/肯定応答指示68が再度セット
され、以前に送られた進行表示に対する承認(肯定応
答)が受け取られたことを示すと判断されるまで、プロ
セッサをストールしたままとしておく。この時点で、ス
テップ84において、プロセッサを解放する。次に、制
御はステップ86に移り、次の進行表示を送り、送出/
肯定応答インディケータ68を再度セットする。次い
で、制御は次の命令のためにステップ72に戻る。
【0045】したがって、図8によれば、プロセッサ
が、更に別の進行表示をモニタ・ユニット18に送らな
ければならないと判定した時点において、前の進行表示
に対する承認が受け取られていない場合、プロセッサを
ストールすることがわかる。
が、更に別の進行表示をモニタ・ユニット18に送らな
ければならないと判定した時点において、前の進行表示
に対する承認が受け取られていない場合、プロセッサを
ストールすることがわかる。
【0046】前述のように、I/O進行表示は、特定の
I/O動作としてモニタ・ユニット18に送ることがで
きる。あるいは、これらは特殊ハードウエア接続(図示
せず)を通じて供給することも可能である。
I/O動作としてモニタ・ユニット18に送ることがで
きる。あるいは、これらは特殊ハードウエア接続(図示
せず)を通じて供給することも可能である。
【0047】図9は、図7を参照して説明したように、
個々の処理セットからの特定の進行表示I/O動作に応
答し、これら処理セットの同時動作を確立し、同時動作
が判定されたときに個々の処理セットに承認を返す、モ
ニタ・ユニットの態様の概略図である。同様の参照符号
で示され、以前に既に説明したエレメントについては、
ここでは再度説明しない。
個々の処理セットからの特定の進行表示I/O動作に応
答し、これら処理セットの同時動作を確立し、同時動作
が判定されたときに個々の処理セットに承認を返す、モ
ニタ・ユニットの態様の概略図である。同様の参照符号
で示され、以前に既に説明したエレメントについては、
ここでは再度説明しない。
【0048】図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を参照して説
明したように、プロセッサのストールを制御するために
用いられるものである。
に接続されている処理セットの対応するプロセッサ毎
に、進行レジスタ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を参照して説
明したように、プロセッサのストールを制御するために
用いられるものである。
【0049】モニタ・ユニット18内の図9の進行レジ
スタ94を読み出すための、図5を参照して説明した、
処理セット12,14等におけるロジックの組み合わせ
によって、個々の処理セットの処理を決定性(dete
rministic)とし、処理中の特定点に応じて同
期化することが可能となることがわかる。既に示したよ
うに、これは、処理セット内で実行される個々の命令を
カウントすることによって決定される、処理中の所定の
点における特殊I/O動作またはその他の進行表示信号
を供給することにより、個々の処理セットにおいては決
定性でないタイマの必要性を回避する。既に示したよう
に、カウントは、個々の命令の種類に応じて行うことが
好ましい。
スタ94を読み出すための、図5を参照して説明した、
処理セット12,14等におけるロジックの組み合わせ
によって、個々の処理セットの処理を決定性(dete
rministic)とし、処理中の特定点に応じて同
期化することが可能となることがわかる。既に示したよ
うに、これは、処理セット内で実行される個々の命令を
カウントすることによって決定される、処理中の所定の
点における特殊I/O動作またはその他の進行表示信号
を供給することにより、個々の処理セットにおいては決
定性でないタイマの必要性を回避する。既に示したよう
に、カウントは、個々の命令の種類に応じて行うことが
好ましい。
【0050】処理セット12,14等は厳格に決定性で
なくてもよい場合もあるが、それらの動作に対するいく
つかの制約を遵守しなければならない。プロセッサが実
行する命令の順序を認めることができなければならな
い。通常、これは、命令がプログラムに書かれている順
序であり、分岐命令によって変更される。プロセッサ
は、内部で命令の順序を変える場合があり、命令によっ
ては並列に実行する場合もあるが、最終的な結果は、プ
ログラマが予期する順序で命令が実行されたかのよう
に、同一となるべきである。このようにならない場合、
プログラムは、プログラマが予期したような結果となら
ない可能性がある(これに関して、割り込みおよびDM
Aについて以下で論ずる)。加えて、モニタ・ユニット
18に対する出力として提示されるI/O動作の順序
は、実行の詳細なタイミングとは独立して、プログラム
によって絶対的に決定される。この機能がないとI/O
デバイスを管理するのが困難であるので、通常このよう
になっている。しかしながら、慣例的に、プロセッサは
速度のために、リードの後ろにライトを並び替えること
を注記しておく。これを可能にしつつ、しかも効果的な
I/O動作を実行することは可能である。これは、プロ
セッサがライト同士の並び替えやリード同士の並び替え
を行わないことが保証され、少なくとも最初のリードお
よび最初のライトを直ちにモニタ・ユニットに送り出す
のであれば、モニタ・ユニット内で、別個のリードおよ
びライト比較チャネルを用いて管理することができる。
なくてもよい場合もあるが、それらの動作に対するいく
つかの制約を遵守しなければならない。プロセッサが実
行する命令の順序を認めることができなければならな
い。通常、これは、命令がプログラムに書かれている順
序であり、分岐命令によって変更される。プロセッサ
は、内部で命令の順序を変える場合があり、命令によっ
ては並列に実行する場合もあるが、最終的な結果は、プ
ログラマが予期する順序で命令が実行されたかのよう
に、同一となるべきである。このようにならない場合、
プログラムは、プログラマが予期したような結果となら
ない可能性がある(これに関して、割り込みおよびDM
Aについて以下で論ずる)。加えて、モニタ・ユニット
18に対する出力として提示されるI/O動作の順序
は、実行の詳細なタイミングとは独立して、プログラム
によって絶対的に決定される。この機能がないとI/O
デバイスを管理するのが困難であるので、通常このよう
になっている。しかしながら、慣例的に、プロセッサは
速度のために、リードの後ろにライトを並び替えること
を注記しておく。これを可能にしつつ、しかも効果的な
I/O動作を実行することは可能である。これは、プロ
セッサがライト同士の並び替えやリード同士の並び替え
を行わないことが保証され、少なくとも最初のリードお
よび最初のライトを直ちにモニタ・ユニットに送り出す
のであれば、モニタ・ユニット内で、別個のリードおよ
びライト比較チャネルを用いて管理することができる。
【0051】図10は、共通の外部バスまたは複数のバ
ス20へのI/O動作の受け渡しを制御し、更に個々の
プロセッサ・ユニットの不良動作を判定するための、モ
ニタ・ユニット18の態様を示す概略図である。
ス20へのI/O動作の受け渡しを制御し、更に個々の
プロセッサ・ユニットの不良動作を判定するための、モ
ニタ・ユニット18の態様を示す概略図である。
【0052】処理セット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が、バッファ
したリード動作を比較するために備えられており、同様
に動作する。
ス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が、バッファ
したリード動作を比較するために備えられており、同様
に動作する。
【0053】3つの処理セットを有する三重モジュラー
冗長(TMR:triple modular red
undant)構成では、どの処理セットが不良状態に
あるかについての判定は、それぞれ、ライトおよびリー
ド・ボータ116,118における多数決によって行う
ことができる。あるいは、2つの処理セットのみがある
構成(即ち、二重モジュラー冗長構成(DMR:dua
l redundant arrangement)で
は、どの処理セットが不良状態にあるかについての判定
は、より複雑になる可能性があるが、診断技法によって
判定することも可能である。
冗長(TMR:triple modular red
undant)構成では、どの処理セットが不良状態に
あるかについての判定は、それぞれ、ライトおよびリー
ド・ボータ116,118における多数決によって行う
ことができる。あるいは、2つの処理セットのみがある
構成(即ち、二重モジュラー冗長構成(DMR:dua
l redundant arrangement)で
は、どの処理セットが不良状態にあるかについての判定
は、より複雑になる可能性があるが、診断技法によって
判定することも可能である。
【0054】ライトおよびリード・ボータ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バスに
発行される。
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バスに
発行される。
【0055】最初にTMRシステムであっても、処理セ
ットの内1つが不良状態と判定されて、DMRシステム
になる可能性もあることは認められよう。したがって、
現在監視対象となっている有効な処理セットの数に応じ
て変動する方針にしたがって、処理セットの同等の動作
を判定することができる。
ットの内1つが不良状態と判定されて、DMRシステム
になる可能性もあることは認められよう。したがって、
現在監視対象となっている有効な処理セットの数に応じ
て変動する方針にしたがって、処理セットの同等の動作
を判定することができる。
【0056】処理セットには、最終的な動作に不確定な
影響を与えるコンポーネントがあってはならない。例え
ば、各処理セットにおいて、プログラムの動作には見る
ことができるタイマは、必ずしも各プログラムにおいて
同じステップで同じ値を提示する訳ではなく、これは許
されない。一方、前述のように、実行された命令の数を
カウントするレジスタを備えることは、決定性である。
処理セットの「実状態」が、キャッシュやその他の一時
的記憶も考慮に入れて、プログラムの実行に影響を与え
得る全てのデータの総合的状態であるとすると、命令実
行の実際の順序に関して不確定的に実状態に影響を与え
るコンポーネントは許されない。必要であれば、I/O
バス上にタイマを配することも可能である。
影響を与えるコンポーネントがあってはならない。例え
ば、各処理セットにおいて、プログラムの動作には見る
ことができるタイマは、必ずしも各プログラムにおいて
同じステップで同じ値を提示する訳ではなく、これは許
されない。一方、前述のように、実行された命令の数を
カウントするレジスタを備えることは、決定性である。
処理セットの「実状態」が、キャッシュやその他の一時
的記憶も考慮に入れて、プログラムの実行に影響を与え
得る全てのデータの総合的状態であるとすると、命令実
行の実際の順序に関して不確定的に実状態に影響を与え
るコンポーネントは許されない。必要であれば、I/O
バス上にタイマを配することも可能である。
【0057】I/O動作の順序がプログラムによって決
められ、プログラムは全ての処理セットに対して同一で
あるとすると、モニタ・ユニットは、いずれかのI/O
動作が行われた時点に、各処理セットによって同じI/
O動作が提示されるのを確認しなければならない。
められ、プログラムは全ての処理セットに対して同一で
あるとすると、モニタ・ユニットは、いずれかのI/O
動作が行われた時点に、各処理セットによって同じI/
O動作が提示されるのを確認しなければならない。
【0058】処理セットが割り込みを受け取ったとき
に、これらの実状態を同一に保持するためには、同じ命
令の後に各処理セットによって割り込みが行われるよう
に構成しなければならない。処理セットがI/O動作を
行っていない場合、モニタ・ユニットは、処理セットの
命令カウンタがどこを指し示しているのか推測すること
ができない。モニタ・ユニット18は、割り込みを同期
して送出するためには、何らかの方策を必要とする。
に、これらの実状態を同一に保持するためには、同じ命
令の後に各処理セットによって割り込みが行われるよう
に構成しなければならない。処理セットがI/O動作を
行っていない場合、モニタ・ユニットは、処理セットの
命令カウンタがどこを指し示しているのか推測すること
ができない。モニタ・ユニット18は、割り込みを同期
して送出するためには、何らかの方策を必要とする。
【0059】前述のように、処理セット内の各プロセッ
サは、予測可能な方法で特殊I/O動作を発行すること
により(例えば、各100命令毎と同等)、どこまで処
理セットが進んだかについてモニタ・ユニット18が観
察することを可能とする。特殊I/O動作のカウントを
保持することによって、モニタ・ユニットは、同一命令
上で同一割り込みを、対象のプロセッサに送出すること
ができる。
サは、予測可能な方法で特殊I/O動作を発行すること
により(例えば、各100命令毎と同等)、どこまで処
理セットが進んだかについてモニタ・ユニット18が観
察することを可能とする。特殊I/O動作のカウントを
保持することによって、モニタ・ユニットは、同一命令
上で同一割り込みを、対象のプロセッサに送出すること
ができる。
【0060】特殊I/Oサイクルが、プロセッサをスト
ールするリードである場合、モニタ・ユニットは、遅い
方のプロセッサが追いつくまで、I/O動作を最初に行
う早い方のプロセッサを常に停止させるように選択する
ことができる。これはシステムを大幅に遅くすることは
ない。何故なら、全体として、比較対象の最も遅い処理
セットよりも速く長期間処理することはできないからで
ある。このように、特殊I/O動作は歩調を合せて進ん
でいくことになる。割り込みを送る必要がある場合、モ
ニタ・ユニットは、これを進行表示に対する応答と共に
戻すように構成する。これは、処理セットの同等のプロ
セッサからの進行表示を形成する特殊リード・サイクル
の全ての受け取りを保留する割り込みを保持する割り込
みレジスタとして、図9の進行レジスタ94が作用する
ように構成することによって、非常に都合よく行われ
る。このように、処理セットの同等のプロセッサから同
等のI/Oリード・サイクルの最後のサイクルの受け取
り時に応答を送ると、I/O動作を同期して送り出すこ
とができる。この時点で、個々のプロセッサ内のプログ
ラム・カウンタは、決定性命令進行カウント機構によっ
て暗示される命令を指し示しており、特殊I/Oリード
から返されるデータは、プロセッサによって割り込み情
報として取り入れられる。
ールするリードである場合、モニタ・ユニットは、遅い
方のプロセッサが追いつくまで、I/O動作を最初に行
う早い方のプロセッサを常に停止させるように選択する
ことができる。これはシステムを大幅に遅くすることは
ない。何故なら、全体として、比較対象の最も遅い処理
セットよりも速く長期間処理することはできないからで
ある。このように、特殊I/O動作は歩調を合せて進ん
でいくことになる。割り込みを送る必要がある場合、モ
ニタ・ユニットは、これを進行表示に対する応答と共に
戻すように構成する。これは、処理セットの同等のプロ
セッサからの進行表示を形成する特殊リード・サイクル
の全ての受け取りを保留する割り込みを保持する割り込
みレジスタとして、図9の進行レジスタ94が作用する
ように構成することによって、非常に都合よく行われ
る。このように、処理セットの同等のプロセッサから同
等のI/Oリード・サイクルの最後のサイクルの受け取
り時に応答を送ると、I/O動作を同期して送り出すこ
とができる。この時点で、個々のプロセッサ内のプログ
ラム・カウンタは、決定性命令進行カウント機構によっ
て暗示される命令を指し示しており、特殊I/Oリード
から返されるデータは、プロセッサによって割り込み情
報として取り入れられる。
【0061】共通I/Oバス・インターフェース58
は、バス20から受け取った割り込みに応答して、割り
込み信号を割り込みデータに変換し、それぞれの進行レ
ジスタ94に格納することができる。
は、バス20から受け取った割り込みに応答して、割り
込み信号を割り込みデータに変換し、それぞれの進行レ
ジスタ94に格納することができる。
【0062】尚、プロセッサがこの特殊リード・サイク
ルを実行するとき、プロセッサはリード・データに依存
しない、リード・サイクル周囲の進行命令を進ませるこ
とができる。通常、リード・データに依存しない命令は
いずれも、実行ユニットから引っ込めることができる。
しかしながら、これでは正確な例外モデルには至らな
い。リード・データを例外と置換する場合、例外処理中
の処理セットの実状態は、予測不可能となる。これは、
ロックステップ・システムの特殊進行表示I/Oサイク
ルには適切でない。この特定形式の命令およびバス・サ
イクルでは、例外を正確に特殊I/Oサイクルの周囲に
置くことが必要である。割り込みを送出する場合、それ
を送出する命令は予測可能でなければならず、そこまで
の全ての命令は完了しており、それを越えた全ての命令
は発行されていてはならない。
ルを実行するとき、プロセッサはリード・データに依存
しない、リード・サイクル周囲の進行命令を進ませるこ
とができる。通常、リード・データに依存しない命令は
いずれも、実行ユニットから引っ込めることができる。
しかしながら、これでは正確な例外モデルには至らな
い。リード・データを例外と置換する場合、例外処理中
の処理セットの実状態は、予測不可能となる。これは、
ロックステップ・システムの特殊進行表示I/Oサイク
ルには適切でない。この特定形式の命令およびバス・サ
イクルでは、例外を正確に特殊I/Oサイクルの周囲に
置くことが必要である。割り込みを送出する場合、それ
を送出する命令は予測可能でなければならず、そこまで
の全ての命令は完了しており、それを越えた全ての命令
は発行されていてはならない。
【0063】最新の処理セットでは、I/Oデバイスに
対するバス・サイクルは、必ずしも単純ではない。バス
・サイクルは、別個のアドレス・フェーズおよびデータ
・フェーズに分解することができる。データ・フェーズ
はアドレス・フェーズから切断され、必ずしもこれと同
じ順序とは限らない。多数のI/O動作(I/Oサイク
ル)を一度に進めることができ、I/O動作の最初の明
証(evidence)がプロセッサから現れる前に、
I/O命令を実行ユニットから引っ込め、完了させるこ
とも可能である。
対するバス・サイクルは、必ずしも単純ではない。バス
・サイクルは、別個のアドレス・フェーズおよびデータ
・フェーズに分解することができる。データ・フェーズ
はアドレス・フェーズから切断され、必ずしもこれと同
じ順序とは限らない。多数のI/O動作(I/Oサイク
ル)を一度に進めることができ、I/O動作の最初の明
証(evidence)がプロセッサから現れる前に、
I/O命令を実行ユニットから引っ込め、完了させるこ
とも可能である。
【0064】比較対象の同等の動作の判定を容易にする
ために、モニタは、以下の動作を行うように、コンフィ
ギュレーションを変更することができる:I/O動作に
おける最初の不変情報(例えば、I/O動作タイプおよ
び/または処理セット内のプロセッサ番号)に応じて、
各I/O動作毎にバッファを決定する;I/O動作にお
ける第2の不変情報(例えば、アドレス・フェーズの順
序付けまたは順序番号)に応じて、識別されたバッファ
内におけるI/O動作の順序を決定する;および処理セ
ットに対する、同等のバッファ内の同等の位置のI/O
動作における同等の第3の不変情報(例えば、ライト値
データ、I/Oコマンドおよびアドレス)に基づいて、
処理セットの同等の動作を判定する。
ために、モニタは、以下の動作を行うように、コンフィ
ギュレーションを変更することができる:I/O動作に
おける最初の不変情報(例えば、I/O動作タイプおよ
び/または処理セット内のプロセッサ番号)に応じて、
各I/O動作毎にバッファを決定する;I/O動作にお
ける第2の不変情報(例えば、アドレス・フェーズの順
序付けまたは順序番号)に応じて、識別されたバッファ
内におけるI/O動作の順序を決定する;および処理セ
ットに対する、同等のバッファ内の同等の位置のI/O
動作における同等の第3の不変情報(例えば、ライト値
データ、I/Oコマンドおよびアドレス)に基づいて、
処理セットの同等の動作を判定する。
【0065】図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サイクル内の変動情報を無視する。
トを示す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サイクル内の変動情報を無視する。
【0066】尚、これは、処理セットの「実状態」にア
クセスする、プロセッサによる主メモリへのアクセスと
は異なることを注記しておく。このアーキテクチャは、
主メモリのアクセスには何ら制約を設けず、ロックステ
ップ動作を行うために、異なる処理セット上で同じ順序
とする必要はない。
クセスする、プロセッサによる主メモリへのアクセスと
は異なることを注記しておく。このアーキテクチャは、
主メモリのアクセスには何ら制約を設けず、ロックステ
ップ動作を行うために、異なる処理セット上で同じ順序
とする必要はない。
【0067】I/Oサイクルがプロセッサにおいてデー
タ・アクセス例外をトリガしなければならないような状
況も、場合によってはあり得る。その場合を以下に記
す: 1)存在しないデバイスへのソフトウエア・アクセス、
または不適切な方法による実際のデバイスへのアクセス
のような、プログラミング・エラー; 2)デバイス・データが明らかに破損している場合や、
デバイスが全く応答しない場合のような、デバイスの不
良;および 3)モニタ・ユニットが同期外れ状態を検出した場合、
比較対象の処理セットがロックステップで動作していな
い場合のような、同期外れイベント。処理セット内にお
いて診断ルーチンをトリガし、処理セット動作の仮想マ
シン・モデルを維持するためには、モニタ・ユニットが
実際にI/Oサイクルを行った場合、何らかの回復処置
の後にI/Oサイクルが再度実行されることを予期し
て、実データを返すことができるにも係らず、アクセス
例外を返すように構成することができる。
タ・アクセス例外をトリガしなければならないような状
況も、場合によってはあり得る。その場合を以下に記
す: 1)存在しないデバイスへのソフトウエア・アクセス、
または不適切な方法による実際のデバイスへのアクセス
のような、プログラミング・エラー; 2)デバイス・データが明らかに破損している場合や、
デバイスが全く応答しない場合のような、デバイスの不
良;および 3)モニタ・ユニットが同期外れ状態を検出した場合、
比較対象の処理セットがロックステップで動作していな
い場合のような、同期外れイベント。処理セット内にお
いて診断ルーチンをトリガし、処理セット動作の仮想マ
シン・モデルを維持するためには、モニタ・ユニットが
実際にI/Oサイクルを行った場合、何らかの回復処置
の後にI/Oサイクルが再度実行されることを予期し
て、実データを返すことができるにも係らず、アクセス
例外を返すように構成することができる。
【0068】ライト・サイクルでは、これらのイベント
はいずれもアクセス例外をトリガする必要がない: 1)存在しないデバイスの場合、データを単に破棄する
ことができ、不適切な実デバイスへのアクセスの場合、
例外変換器(58、図11を参照しながら説明する)
は、不良デバイスによるのではなく、不良アクセスによ
るデバイス不良を示し、そのように印すように構成する
ことができる; 2)ライト・データの場合、デバイスは、通常何も応答
しない;および 3)ライト命令をモニタ18内にバッファし、次いで、
モニタ18がどれが正しいのかを決定した後に、送るこ
とができる。
はいずれもアクセス例外をトリガする必要がない: 1)存在しないデバイスの場合、データを単に破棄する
ことができ、不適切な実デバイスへのアクセスの場合、
例外変換器(58、図11を参照しながら説明する)
は、不良デバイスによるのではなく、不良アクセスによ
るデバイス不良を示し、そのように印すように構成する
ことができる; 2)ライト・データの場合、デバイスは、通常何も応答
しない;および 3)ライト命令をモニタ18内にバッファし、次いで、
モニタ18がどれが正しいのかを決定した後に、送るこ
とができる。
【0069】リード・サイクルについては、上述の場合
1および2では、適正に回復するためにアクセス例外を
返す必要はない。これらはI/Oサイクルであるので、
これらはデバイス・ドライバによって発生される。従来
のデバイス・ドライバ硬化(hardening)の使
用により、ドライバ・ソフトウエアは、デバイスから読
み取ったデータ内の誤りに対して、ドライバを硬化する
(harden)。ドライバにおけるチェック・ルーテ
ィンは、破損データの存在以外に他の手がかりがなくと
も、通常誤りを検出することができる。
1および2では、適正に回復するためにアクセス例外を
返す必要はない。これらはI/Oサイクルであるので、
これらはデバイス・ドライバによって発生される。従来
のデバイス・ドライバ硬化(hardening)の使
用により、ドライバ・ソフトウエアは、デバイスから読
み取ったデータ内の誤りに対して、ドライバを硬化する
(harden)。ドライバにおけるチェック・ルーテ
ィンは、破損データの存在以外に他の手がかりがなくと
も、通常誤りを検出することができる。
【0070】図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内の不良フラグをセットすることによって、バス・
エラーの根源を形成するデバイスに不良と印を付けるよ
うに動作可能である。デバイス、即ち、資源、またはデ
バイス・バスが最初に不良として印を付けられた場合、
プロセッサ(または、複数のプロセッサ)または処理セ
ット(または、複数の処理セット)に適宜割り込みを返
すことができる。
よび/または不良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内の不良フラグをセットすることによって、バス・
エラーの根源を形成するデバイスに不良と印を付けるよ
うに動作可能である。デバイス、即ち、資源、またはデ
バイス・バスが最初に不良として印を付けられた場合、
プロセッサ(または、複数のプロセッサ)または処理セ
ット(または、複数の処理セット)に適宜割り込みを返
すことができる。
【0071】その後、I/Oインターフェース58は、
ステータス・レジスタ134内のフラグによって、既に
欠陥と印を付けられた資源(デバイス)130または1
32のために、処理セットの少なくとも1つからのI/
O動作に応答し、外部バス20からI/O動作が渡され
るのを防止するように動作可能である。リードの場合、
更に、所定のデータ応答を、開始した処理セットに返す
ように動作可能である。ライトの場合、動作を放棄し、
開始した処理セットに肯定応答を返すことによって終了
するように動作可能である。図11において気が付くで
あろうが、多数の処理セットからのI/O動作がボータ
/コントローラ50を通過する構成では、バス・エラー
信号の修正を行うI/Oインターフェースは、ボータ5
0と外部共通バスまたは複数のバス20との間に備えら
れる。
ステータス・レジスタ134内のフラグによって、既に
欠陥と印を付けられた資源(デバイス)130または1
32のために、処理セットの少なくとも1つからのI/
O動作に応答し、外部バス20からI/O動作が渡され
るのを防止するように動作可能である。リードの場合、
更に、所定のデータ応答を、開始した処理セットに返す
ように動作可能である。ライトの場合、動作を放棄し、
開始した処理セットに肯定応答を返すことによって終了
するように動作可能である。図11において気が付くで
あろうが、多数の処理セットからのI/O動作がボータ
/コントローラ50を通過する構成では、バス・エラー
信号の修正を行うI/Oインターフェースは、ボータ5
0と外部共通バスまたは複数のバス20との間に備えら
れる。
【0072】したがって、モニタ・ユニットは、一旦誤
りデータを返したデバイスへのアクセスを禁止し、ドラ
イバがすぐに問題に気付くようにすることができる。モ
ニタ・ユニットが、問題のあるI/Oサイクルに対し
て、指定しないデータを返し、アクセス例外を通知しな
い場合、I/Oサイクルおよび命令順序付けルールがい
かに複雑であっても、処理セットは同期状態を続ける。
モニタ・ユニットは、同じ誤りデータを2つの処理セッ
トに返さなければならない。モニタ・ユニットは、後に
割り込みによって不良を通知することを選択してもよ
い。
りデータを返したデバイスへのアクセスを禁止し、ドラ
イバがすぐに問題に気付くようにすることができる。モ
ニタ・ユニットが、問題のあるI/Oサイクルに対し
て、指定しないデータを返し、アクセス例外を通知しな
い場合、I/Oサイクルおよび命令順序付けルールがい
かに複雑であっても、処理セットは同期状態を続ける。
モニタ・ユニットは、同じ誤りデータを2つの処理セッ
トに返さなければならない。モニタ・ユニットは、後に
割り込みによって不良を通知することを選択してもよ
い。
【0073】前述の場合3におけるリード・サイクルで
は、アクセス例外ルーチンが、プロセッサが誤りデータ
に作用するのを禁止することが重要である。例外から戻
ったときに、処理セットはI/Oリード・サイクルを再
度実行し、同期外れ状態によってトリガされた診断イベ
ントについて、基礎をなすデバイス・ドライバが全く知
ることなく進めることができる。アクセス例外ルーチン
が進行中の場合、比較対象の処理セットの「実状態」が
同一であるか否かについては問題にしない。処理セット
は既に同期外れとなっている。一層の発散(diver
gence)は大したことではない。コンフィギュレー
ションをし直して不良から回復するとき、処理セットの
内1つのみが正しいと見なされることになる。したがっ
て、アクセス例外が発生した場合、正確にどの命令が完
了しているかは問題ではない。プロセッサにおける何ら
かのトレースによって、プロセッサが放棄したI/O動
作を回復し再度実行することが可能となるのであれば、
例外は正確である必要はない。
は、アクセス例外ルーチンが、プロセッサが誤りデータ
に作用するのを禁止することが重要である。例外から戻
ったときに、処理セットはI/Oリード・サイクルを再
度実行し、同期外れ状態によってトリガされた診断イベ
ントについて、基礎をなすデバイス・ドライバが全く知
ることなく進めることができる。アクセス例外ルーチン
が進行中の場合、比較対象の処理セットの「実状態」が
同一であるか否かについては問題にしない。処理セット
は既に同期外れとなっている。一層の発散(diver
gence)は大したことではない。コンフィギュレー
ションをし直して不良から回復するとき、処理セットの
内1つのみが正しいと見なされることになる。したがっ
て、アクセス例外が発生した場合、正確にどの命令が完
了しているかは問題ではない。プロセッサにおける何ら
かのトレースによって、プロセッサが放棄したI/O動
作を回復し再度実行することが可能となるのであれば、
例外は正確である必要はない。
【0074】三重モジュラー冗長(TMR:tripl
e−modular−redundant)フォールト
・トレラント・システムでは、同期外れ(OOS:ou
t−of−sync)イベントの後、1つのみではな
く、2つの処理セットが同期して実行することができる
のであれば有利である。これが行われるためには、同期
外れのI/Oリード・サイクル上でのデータ・アクセス
例外は、正確でなければならない。制約を緩めた手法と
して、モニタ・ユニットに、TMRシステムの2対1の
選出の容易な診断シグネチャを認識させ、同期外れイベ
ント時に自動的にシステムのコンフィギュレーションを
し直させることがあげられる。モニタ・ユニットは、O
OSイベント時に、比較の結果ミスとなった処理セット
の出力を直ちに無視し始め、残りの2つの処理セットに
よる二重モジュラー冗長(DMR)コンフィギュレーシ
ョンで続行する。進行中のI/Oサイクルは、何の例外
もなく完了することができ、しかもデータ・アクセス例
外は完全に正確である必要はない。
e−modular−redundant)フォールト
・トレラント・システムでは、同期外れ(OOS:ou
t−of−sync)イベントの後、1つのみではな
く、2つの処理セットが同期して実行することができる
のであれば有利である。これが行われるためには、同期
外れのI/Oリード・サイクル上でのデータ・アクセス
例外は、正確でなければならない。制約を緩めた手法と
して、モニタ・ユニットに、TMRシステムの2対1の
選出の容易な診断シグネチャを認識させ、同期外れイベ
ント時に自動的にシステムのコンフィギュレーションを
し直させることがあげられる。モニタ・ユニットは、O
OSイベント時に、比較の結果ミスとなった処理セット
の出力を直ちに無視し始め、残りの2つの処理セットに
よる二重モジュラー冗長(DMR)コンフィギュレーシ
ョンで続行する。進行中のI/Oサイクルは、何の例外
もなく完了することができ、しかもデータ・アクセス例
外は完全に正確である必要はない。
【0075】I/Oサイクルを別個のアドレス・フェー
ズおよびデータ・フェーズに分割し、アドレス・フェー
ズによってサイクルの順序を定義する場合、データ・フ
ェーズは、比較対象の処理セット上で同じ順序である必
要はない。モニタ・ユニットにとっては、こうすること
が都合良い場合もあるが、詳細なバス・タイミングの変
更は、非同期ロックステップ動作の不可欠な部分であ
り、データ・フェーズの順序替えは単にバス・タイミン
グの些細なことに過ぎない。モニタ・ユニットおよびプ
ロセッサが進行するためには、常にデッドロックのない
機構が存在しさえすればよい。資源およびプロトコル
は、十分な保留中のI/Oサイクルがモニタ18におい
て見ることができ、一致した動作を認められるように存
在しなければならない。ある処理セット内の1つのプロ
セッサからのI/Oサイクルは、他からのI/Oサイク
ルを妨げてはならない。
ズおよびデータ・フェーズに分割し、アドレス・フェー
ズによってサイクルの順序を定義する場合、データ・フ
ェーズは、比較対象の処理セット上で同じ順序である必
要はない。モニタ・ユニットにとっては、こうすること
が都合良い場合もあるが、詳細なバス・タイミングの変
更は、非同期ロックステップ動作の不可欠な部分であ
り、データ・フェーズの順序替えは単にバス・タイミン
グの些細なことに過ぎない。モニタ・ユニットおよびプ
ロセッサが進行するためには、常にデッドロックのない
機構が存在しさえすればよい。資源およびプロトコル
は、十分な保留中のI/Oサイクルがモニタ18におい
て見ることができ、一致した動作を認められるように存
在しなければならない。ある処理セット内の1つのプロ
セッサからのI/Oサイクルは、他からのI/Oサイク
ルを妨げてはならない。
【0076】プロセッサが採用し得る最適化の1つは、
都合がよければ、多数のI/Oアクセスを単一のバス・
サイクルに併合することである。例えば、2つの1バイ
ト・リードが隣接するI/Oアドレスに関係する場合、
プロセッサはこれらを単一の2バイト・リードとして発
行してもよい。これは、I/Oドライバにとっては一般
的な問題である。1つの処理セットが2つの単一バイト
・サイクルを発行し、別の処理セットが1つの2バイト
・サイクルを発行した場合、モニタ・ユニットのジョブ
は難しくなる。この種の再構成は、通常の処理セットに
おいてさえも、I/Oデバイスの誤動作(mis−op
eration)の原因となり得る。したがって、処理
セットは、この併合がI/Oサイクル上で発生する必要
がないことを保証する機構を有する。非同期ロックステ
ップ動作では、これらの最適化が全てのI/Oサイクル
のために抑制されることを保証しさえすればよい。
都合がよければ、多数のI/Oアクセスを単一のバス・
サイクルに併合することである。例えば、2つの1バイ
ト・リードが隣接するI/Oアドレスに関係する場合、
プロセッサはこれらを単一の2バイト・リードとして発
行してもよい。これは、I/Oドライバにとっては一般
的な問題である。1つの処理セットが2つの単一バイト
・サイクルを発行し、別の処理セットが1つの2バイト
・サイクルを発行した場合、モニタ・ユニットのジョブ
は難しくなる。この種の再構成は、通常の処理セットに
おいてさえも、I/Oデバイスの誤動作(mis−op
eration)の原因となり得る。したがって、処理
セットは、この併合がI/Oサイクル上で発生する必要
がないことを保証する機構を有する。非同期ロックステ
ップ動作では、これらの最適化が全てのI/Oサイクル
のために抑制されることを保証しさえすればよい。
【0077】このように、非同期ロックステップ動作が
実際にI/O実施に賦課する制約は、非常に少ないこと
がわかる。本発明の好適な実施形態では、モニタ・ユニ
ット18は、不良I/Oサイクルのためのアクセス例外
の代わりに、データのリターンによってI/Oサイクル
周囲に精巧なプロセッサ動作を可能にする。
実際にI/O実施に賦課する制約は、非常に少ないこと
がわかる。本発明の好適な実施形態では、モニタ・ユニ
ット18は、不良I/Oサイクルのためのアクセス例外
の代わりに、データのリターンによってI/Oサイクル
周囲に精巧なプロセッサ動作を可能にする。
【0078】プロセッサは、メモリ管理ユニット(MM
U:memory management unit)
全体を通じて、命令のフェッチならびにデータのリード
およびライトを実行することができる。MMUの目的
は、実アドレス空間に変換可能な仮想アドレス空間を与
えることである。これが意味するのは、変換が成功せ
ず、仮想データを物理空間上にマップできない場合、プ
ロセッサにおいて例外を発生し、基礎的な動作を乱すこ
となく、システムのコンフィギュレーションをやり直す
ことができるようにすることである。
U:memory management unit)
全体を通じて、命令のフェッチならびにデータのリード
およびライトを実行することができる。MMUの目的
は、実アドレス空間に変換可能な仮想アドレス空間を与
えることである。これが意味するのは、変換が成功せ
ず、仮想データを物理空間上にマップできない場合、プ
ロセッサにおいて例外を発生し、基礎的な動作を乱すこ
となく、システムのコンフィギュレーションをやり直す
ことができるようにすることである。
【0079】ページ・ミス例外(page miss
exception)は、ページ・ミスを生じたイベン
トから多少分断されることが多い。例えば、命令のプリ
フェッチによって、命令実行ではなく、ページ・ミス・
ハンドラをトリガする場合がある。ライト・データ・ペ
ージ・ミスは、格納命令が実行ユニットから引っ込めら
れてかなり後に発見される場合がある。非同期システム
では、この精度欠如は、比較対象の処理セットの発散を
招く可能性がある。これに対するソリューションは、デ
ータおよび命令双方に正確なページ・ミス例外を有する
ことである。ページ・ミス例外ハンドラは、失われた命
令を必要とする場合、または失われたデータを読み取る
または書き込む場合、正確に入力しなければならない。
このイベント以前の命令は完了していなければならず、
このイベントの後の命令は開始していてはならない。
exception)は、ページ・ミスを生じたイベン
トから多少分断されることが多い。例えば、命令のプリ
フェッチによって、命令実行ではなく、ページ・ミス・
ハンドラをトリガする場合がある。ライト・データ・ペ
ージ・ミスは、格納命令が実行ユニットから引っ込めら
れてかなり後に発見される場合がある。非同期システム
では、この精度欠如は、比較対象の処理セットの発散を
招く可能性がある。これに対するソリューションは、デ
ータおよび命令双方に正確なページ・ミス例外を有する
ことである。ページ・ミス例外ハンドラは、失われた命
令を必要とする場合、または失われたデータを読み取る
または書き込む場合、正確に入力しなければならない。
このイベント以前の命令は完了していなければならず、
このイベントの後の命令は開始していてはならない。
【0080】これまでの非同期ロックステップ動作の説
明は、処理セットをプロセッサを有するコアと主メモリ
の「実状態」とに分割し、モニタ・ユニットをI/Oデ
バイスから分離した。以下では、多数のプロセッサを有
する処理セットに拡大して説明を行う。
明は、処理セットをプロセッサを有するコアと主メモリ
の「実状態」とに分割し、モニタ・ユニットをI/Oデ
バイスから分離した。以下では、多数のプロセッサを有
する処理セットに拡大して説明を行う。
【0081】マルチプロセッサ(MP)動作では、I/
O動作にはそれらのプロセッサ番号を付けることが好ま
しい。モニタ・ユニット18は、比較対象の処理セット
全てについて、プロセッサ毎にI/O動作を比較するよ
うに構成されている。これは、前述のように、処理セッ
トから受け取るI/O動作のために、モニタ・ユニット
において多数のバッファを用いることによって行うこと
ができる。処理セット12の1つのプロセッサP0が最
初に次のI/Oサイクルを生成する場合がある。処理セ
ット14の別のプロセッサP1が最初に異なるI/Oサ
イクルを生成する場合がある。これは故障ではない。モ
ニタ・ユニットは、これを分類し、他のプロセッサが、
一致するI/Oサイクルを行うのを待つハードウエアを
有する。システムが正しく動作している場合、最終的に
はこのようになる。システムが正しく動作していない場
合、モニタ・ユニットは何らかの方法で再コンフィギュ
レーションをトリガしなければならない。しかしなが
ら、このルーチン例外は、MP非同期ロックステップ動
作では、現実の問題とはならない。
O動作にはそれらのプロセッサ番号を付けることが好ま
しい。モニタ・ユニット18は、比較対象の処理セット
全てについて、プロセッサ毎にI/O動作を比較するよ
うに構成されている。これは、前述のように、処理セッ
トから受け取るI/O動作のために、モニタ・ユニット
において多数のバッファを用いることによって行うこと
ができる。処理セット12の1つのプロセッサP0が最
初に次のI/Oサイクルを生成する場合がある。処理セ
ット14の別のプロセッサP1が最初に異なるI/Oサ
イクルを生成する場合がある。これは故障ではない。モ
ニタ・ユニットは、これを分類し、他のプロセッサが、
一致するI/Oサイクルを行うのを待つハードウエアを
有する。システムが正しく動作している場合、最終的に
はこのようになる。システムが正しく動作していない場
合、モニタ・ユニットは何らかの方法で再コンフィギュ
レーションをトリガしなければならない。しかしなが
ら、このルーチン例外は、MP非同期ロックステップ動
作では、現実の問題とはならない。
【0082】MPマシンでは、プロセッサは、「実状
態」には独立して機能する。比較対象の各処理セット内
におけるプロセッサは、同じペースで進むのではなく、
各独立した処理セット内における多数のプロセッサの相
対的な進行は関係付けられない。2つの比較対象の処理
セットa,bを想定する。各処理セットは、同じ実状態
および2つのプロセッサP0,P1を有する。P0およ
びP1は双方ともコア内に位置し、モニタ・ユニットの
干渉なく実状態にアクセスする。これは、速度に対して
は非常に望ましい。各処理セット内のP0,P1双方が
新たな資源、例えば、メモリのページを必要とする場
合、これらは実状態内に保持されている予備ページのプ
ールから、そのページを獲得するように動作する。第1
の処理セットPUAでは、P0が多少速く、次のページ
を獲得する。第2の処理セットPUBでは、P1が多少
速く、次のページを獲得する。処理セットの実状態は、
発散し、再度収束(re−converge)すること
は決してない。単一プロセッサ・システムでは、ロック
ステップ動作は、割り込みの決定性送出(determ
inistic delivery)に依存し、これは
モニタ・ユニットが調整することができる。MPシステ
ムでは、ロックステップ動作は、モニタ・ユニットには
見えない、コア動作の内部詳細にも依存する。
態」には独立して機能する。比較対象の各処理セット内
におけるプロセッサは、同じペースで進むのではなく、
各独立した処理セット内における多数のプロセッサの相
対的な進行は関係付けられない。2つの比較対象の処理
セットa,bを想定する。各処理セットは、同じ実状態
および2つのプロセッサP0,P1を有する。P0およ
びP1は双方ともコア内に位置し、モニタ・ユニットの
干渉なく実状態にアクセスする。これは、速度に対して
は非常に望ましい。各処理セット内のP0,P1双方が
新たな資源、例えば、メモリのページを必要とする場
合、これらは実状態内に保持されている予備ページのプ
ールから、そのページを獲得するように動作する。第1
の処理セットPUAでは、P0が多少速く、次のページ
を獲得する。第2の処理セットPUBでは、P1が多少
速く、次のページを獲得する。処理セットの実状態は、
発散し、再度収束(re−converge)すること
は決してない。単一プロセッサ・システムでは、ロック
ステップ動作は、割り込みの決定性送出(determ
inistic delivery)に依存し、これは
モニタ・ユニットが調整することができる。MPシステ
ムでは、ロックステップ動作は、モニタ・ユニットには
見えない、コア動作の内部詳細にも依存する。
【0083】これを克服するために、本発明の一実施形
態では、単一の処理セットにおける多数のプロセッサが
相互排除プリミティブ(mutual exclusi
onprimitive)(mutex)を用いる方法
に対して、制御を実施する。実際には、これは、mut
exを用いるプロセッサ内の種々の処理スレッドであ
る。MPマシンでは、適当に単純なプログラミング環境
を提供するために、複数のプロセッサ(むしろ、その中
で実行するスレッド)がmutexを用いて主メモリの
エリアへのアクセスを管理する。実際には、通常、複数
のプロセッサが実状態の同じ部分で動作していることは
全くなく、直交領域で動作している。これらの領域は任
意に複雑な形状を有することができ、ある領域に属する
アドレスはどこにでも分散することができるが、領域は
重複しない。1つのプロセッサ(プロセッサ・スレッ
ド)が、他のプロセッサも同時に使用している可能性が
ある領域内のアドレスへのアクセスを必要とする場合、
最初にmutexの所有権を獲得する。そのmutex
は、誤解を防止するためにソフトウエアが特定して与え
るものである。一度に1つのプロセッサ(プロセッサ・
スレッド)のみが、1つの領域へのライト・アクセスを
獲得する。これがライト・アクセスを有する間、他のプ
ロセッサ(プロセッサ・スレッド)はリード・アクセス
を有さない。
態では、単一の処理セットにおける多数のプロセッサが
相互排除プリミティブ(mutual exclusi
onprimitive)(mutex)を用いる方法
に対して、制御を実施する。実際には、これは、mut
exを用いるプロセッサ内の種々の処理スレッドであ
る。MPマシンでは、適当に単純なプログラミング環境
を提供するために、複数のプロセッサ(むしろ、その中
で実行するスレッド)がmutexを用いて主メモリの
エリアへのアクセスを管理する。実際には、通常、複数
のプロセッサが実状態の同じ部分で動作していることは
全くなく、直交領域で動作している。これらの領域は任
意に複雑な形状を有することができ、ある領域に属する
アドレスはどこにでも分散することができるが、領域は
重複しない。1つのプロセッサ(プロセッサ・スレッ
ド)が、他のプロセッサも同時に使用している可能性が
ある領域内のアドレスへのアクセスを必要とする場合、
最初にmutexの所有権を獲得する。そのmutex
は、誤解を防止するためにソフトウエアが特定して与え
るものである。一度に1つのプロセッサ(プロセッサ・
スレッド)のみが、1つの領域へのライト・アクセスを
獲得する。これがライト・アクセスを有する間、他のプ
ロセッサ(プロセッサ・スレッド)はリード・アクセス
を有さない。
【0084】現在のプログラミングでは、全てのプロセ
ッサ間の相互作用が厳格にmutexによって統制され
ている訳ではないことを注記するのは重要である。他の
独断性の少ない機構や、アド・ホック(ad hoc)
機構も用いることができる。例えば、1つのプロセッサ
には、ある位置に書き込む暗示的な許可を与え、他のプ
ロセッサにはその位置を読み取ることを許可することが
できる。ユーザ・プログラムには共有メモリが使用可能
であり、システムには未知のアプリケーションに、遠回
りした方式(devious scheme)を置くこ
とができる。しかしながら、これらのプログラム全て
を、mutexを用いるプログラムに変換することがで
きる。
ッサ間の相互作用が厳格にmutexによって統制され
ている訳ではないことを注記するのは重要である。他の
独断性の少ない機構や、アド・ホック(ad hoc)
機構も用いることができる。例えば、1つのプロセッサ
には、ある位置に書き込む暗示的な許可を与え、他のプ
ロセッサにはその位置を読み取ることを許可することが
できる。ユーザ・プログラムには共有メモリが使用可能
であり、システムには未知のアプリケーションに、遠回
りした方式(devious scheme)を置くこ
とができる。しかしながら、これらのプログラム全て
を、mutexを用いるプログラムに変換することがで
きる。
【0085】mutexを適正に使用することにより、
当該プロセッサがその部分に対するアクセスを有する
間、他のプロセッサはそれを変更しないという重要な制
約を設け、MPシステムの複数のプロセッサ各々に、全
体的実状態(real state)の内それ自体の部
分に作用させる。したがって、あるプロセッサに見るこ
とができる部分的な実状態が、この1つのプロセッサの
動作のみに依存する場合、このプロセッサの動作は、実
状態の見える部分にのみ依存し、当該プロセッサに対す
る見える実状態の初期値によって決定される。ここで、
プログラミングが、実状態に対する変化が実状態の初期
値によって決定されることを保証するとすれば、未確定
のまま残されている唯一の変数は、種々のプロセッサに
よるmutexの獲得順序である。種々の処理セット内
のプロセッサ(プロセッサ・スレッド)が同じ順序でm
utexを獲得し解放する場合、実状態に対する変更は
全て完全に決定される。したがって、MP非同期ロック
ステップ動作に対する2つの制約は、プログラムがmu
texを適正に使用して、変更可能な実状態の部分に個
々のプロセッサのアクセスを強制(enforce)す
ること、およびハードウエアが、比較対象の処理セット
上においてmutexを同期させるように調整すること
である。
当該プロセッサがその部分に対するアクセスを有する
間、他のプロセッサはそれを変更しないという重要な制
約を設け、MPシステムの複数のプロセッサ各々に、全
体的実状態(real state)の内それ自体の部
分に作用させる。したがって、あるプロセッサに見るこ
とができる部分的な実状態が、この1つのプロセッサの
動作のみに依存する場合、このプロセッサの動作は、実
状態の見える部分にのみ依存し、当該プロセッサに対す
る見える実状態の初期値によって決定される。ここで、
プログラミングが、実状態に対する変化が実状態の初期
値によって決定されることを保証するとすれば、未確定
のまま残されている唯一の変数は、種々のプロセッサに
よるmutexの獲得順序である。種々の処理セット内
のプロセッサ(プロセッサ・スレッド)が同じ順序でm
utexを獲得し解放する場合、実状態に対する変更は
全て完全に決定される。したがって、MP非同期ロック
ステップ動作に対する2つの制約は、プログラムがmu
texを適正に使用して、変更可能な実状態の部分に個
々のプロセッサのアクセスを強制(enforce)す
ること、およびハードウエアが、比較対象の処理セット
上においてmutexを同期させるように調整すること
である。
【0086】モニタ・ユニット18は、ハードウエア仲
入を行い、mutexの順序付けを実施する。mute
x獲得および解放のためのコードを変更して、モニタ・
ユニットにアクセスすることができる。したがって、モ
ニタ・ユニットには順序付けを制御するための多種多様
な方法がある。
入を行い、mutexの順序付けを実施する。mute
x獲得および解放のためのコードを変更して、モニタ・
ユニットにアクセスすることができる。したがって、モ
ニタ・ユニットには順序付けを制御するための多種多様
な方法がある。
【0087】モニタ・ユニットが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がプロセッサを
ストールせずに進めさせるために行うことができる多く
の最適化がある。しかしながら、結局、動作の速度は、
最も遅いプロセッサによって決定される。
を制御するための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がプロセッサを
ストールせずに進めさせるために行うことができる多く
の最適化がある。しかしながら、結局、動作の速度は、
最も遅いプロセッサによって決定される。
【0088】モニタ・ユニットがmutexの順序付け
を制御する他の手法は、プロセッサ毎に多数のmute
x開始レジスタを備えることである。この少数の開始レ
ジスタは、プロセッサが実行するmutexソフトウエ
ア内のハッシュ変換機構によって、大きな総数のmut
ex上にマップすることができる。どのmutexを求
めてプロセッサが争っていたかが、どの開始レジスタが
アクセスされたかを決定するが、1対1の関係である必
要はない。モニタ・ユニットは、プロセッサが同じ開始
レジスタ上でmutexを争うことを妨げるだけであ
る。これによって、プロセッサがmutexを争って多
くの時間を費やす場合に、遅延を短縮する。尚、プロセ
ッサ毎に必要な停止レジスタは1つだけでよいことを注
記しておく。各プロセッサは、一度に1つのmutex
のみを争う。ハッシュ・テーブル(hash tabl
e)を用いる場合、ハッシュ・テーブル内の独立したエ
ントリによって管理されるmutexは、プロセッサ・
セットの独立した実状態を管理する。
を制御する他の手法は、プロセッサ毎に多数のmute
x開始レジスタを備えることである。この少数の開始レ
ジスタは、プロセッサが実行するmutexソフトウエ
ア内のハッシュ変換機構によって、大きな総数のmut
ex上にマップすることができる。どのmutexを求
めてプロセッサが争っていたかが、どの開始レジスタが
アクセスされたかを決定するが、1対1の関係である必
要はない。モニタ・ユニットは、プロセッサが同じ開始
レジスタ上でmutexを争うことを妨げるだけであ
る。これによって、プロセッサがmutexを争って多
くの時間を費やす場合に、遅延を短縮する。尚、プロセ
ッサ毎に必要な停止レジスタは1つだけでよいことを注
記しておく。各プロセッサは、一度に1つのmutex
のみを争う。ハッシュ・テーブル(hash tabl
e)を用いる場合、ハッシュ・テーブル内の独立したエ
ントリによって管理されるmutexは、プロセッサ・
セットの独立した実状態を管理する。
【0089】モニタ・ユニットがmutexの順序付け
を制御する他の手法は、モニタ・ユニットにハードウエ
アmutexを実施させることである。モニタ・ユニッ
ト内のmutexレジスタを読み取り、獲得が成功であ
ったか否かに応じて、0または1の値をプロセッサに返
すことができる。プロセッサによる同じレジスタへの書
き込みによって、モニタ・ユニットに、mutexが解
放されたことを通知することもできる。しかしながら、
この場合、制約のために、これはI/Oリードとライト
との間の決定論的(決定性の)関係の上に位置すること
に注意を払う必要がある。あるいは、異なるアドレスの
リードによっても、mutexの解放を通知することが
できる。mutex獲得のためのリードは、順序付けを
確保するために、データを返すのを遅らせることができ
る。モニタ・ユニットは、各プロセッサが多くのmut
exを実施するために多数のレジスタを備えることがで
きる。
を制御する他の手法は、モニタ・ユニットにハードウエ
アmutexを実施させることである。モニタ・ユニッ
ト内のmutexレジスタを読み取り、獲得が成功であ
ったか否かに応じて、0または1の値をプロセッサに返
すことができる。プロセッサによる同じレジスタへの書
き込みによって、モニタ・ユニットに、mutexが解
放されたことを通知することもできる。しかしながら、
この場合、制約のために、これはI/Oリードとライト
との間の決定論的(決定性の)関係の上に位置すること
に注意を払う必要がある。あるいは、異なるアドレスの
リードによっても、mutexの解放を通知することが
できる。mutex獲得のためのリードは、順序付けを
確保するために、データを返すのを遅らせることができ
る。モニタ・ユニットは、各プロセッサが多くのmut
exを実施するために多数のレジスタを備えることがで
きる。
【0090】図13Aは、mutexハードウエアに可
能なコンフィギュレーションの概略図であり、mute
xプロセッサ120およびmutex記憶部122を含
む。図13Bは、関連するアドレス・マップである。こ
の種のmutexハードウエアは、ある種の計算を高速
化するために用いることができる。図13のmutex
ハードウエアの動作についてこれより説明する。
能なコンフィギュレーションの概略図であり、mute
xプロセッサ120およびmutex記憶部122を含
む。図13Bは、関連するアドレス・マップである。こ
の種のmutexハードウエアは、ある種の計算を高速
化するために用いることができる。図13のmutex
ハードウエアの動作についてこれより説明する。
【0091】処理セット(例えば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記憶部の元の値が所有されてい
ることまたは所有されていないことのどちらを示すかに
ついて通知させる。
ッサ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記憶部の元の値が所有されてい
ることまたは所有されていないことのどちらを示すかに
ついて通知させる。
【0092】mutex Nの所有権を放棄するために
は、所有するプロセッサPは、mutex解放Nレジス
タ128のアドレスを読み取る。返される値は重要でな
い。mutexプロセッサは、mutex Nに対する
mutex記憶部内の値を変更し、それが所有されてい
ないことを示す。
は、所有するプロセッサPは、mutex解放Nレジス
タ128のアドレスを読み取る。返される値は重要でな
い。mutexプロセッサは、mutex Nに対する
mutex記憶部内の値を変更し、それが所有されてい
ないことを示す。
【0093】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の放出という、可能性のあるエラーを検出することが
できる。これらのエラーに関する診断情報を提示するこ
とができる。
ルにプロセッサ番号を関連付けている場合、mutex
プロセッサ120は、あるmutexに対する要求が、
そのmutexを既に所有しているプロセッサPから出
されるという、可能性のあるエラーを検出することがで
きる。あるいは、このプログラミング・モデルを正しい
として定義することができ、mutexプロセッサ12
0は、mutex記憶部においてmutexが1つのプ
ロセッサPによって所有された「回数」を記憶すること
ができ、設計者の思惑通りに、mutexの解放の繰り
返しによって0まで減少したときにのみmutex所有
権を解放するか、あるいは、最初のmutexの解放時
にそれを解放する。同様に、mutexプロセッサ12
0は、解放するプロセッサPが所有していないmute
xの放出という、可能性のあるエラーを検出することが
できる。これらのエラーに関する診断情報を提示するこ
とができる。
【0094】このmutexハードウエアを非同期ロッ
クステップ・フォールト・トレラント・システムにおい
て用いるためには、これをI/Oバス上に置くことがで
きる。モニタ・ユニット18は、I/Oバス上で選出さ
れ同期化されたサイクルのみを提示するので、多数の処
理セット上での同等のmutexの順序付けを自動的に
与える。追加のモニタ機能は不要である。
クステップ・フォールト・トレラント・システムにおい
て用いるためには、これをI/Oバス上に置くことがで
きる。モニタ・ユニット18は、I/Oバス上で選出さ
れ同期化されたサイクルのみを提示するので、多数の処
理セット上での同等のmutexの順序付けを自動的に
与える。追加のモニタ機能は不要である。
【0095】モニタ・ユニットがmutexの順序付け
を制御するための更に別の手法は、前述の手法を組み合
わせて用いることである。前のパラグラフにおけるよう
に、モニタ・ユニットのハードウエアには、比較的少数
の使用度の高いmutexを実装することができ、プロ
セッサ当たり1つ以上の開始/停止レジスタが、主メモ
リ内の重要度が低い任意の数のmutexの制御を行う
ことができる。
を制御するための更に別の手法は、前述の手法を組み合
わせて用いることである。前のパラグラフにおけるよう
に、モニタ・ユニットのハードウエアには、比較的少数
の使用度の高いmutexを実装することができ、プロ
セッサ当たり1つ以上の開始/停止レジスタが、主メモ
リ内の重要度が低い任意の数のmutexの制御を行う
ことができる。
【0096】プログラミングの簡略化のために、モニタ
・ユニットは、全ての処理セットの全てのプロセッサ
に、同じmutexに対してはモニタ・ユニットのmu
texレジスタ内の同じアドレスをアクセスさせ、mu
texの順序付けのために処理セットとプロセッサとの
間で区別するハードウエア方法を使用させることができ
る。
・ユニットは、全ての処理セットの全てのプロセッサ
に、同じmutexに対してはモニタ・ユニットのmu
texレジスタ内の同じアドレスをアクセスさせ、mu
texの順序付けのために処理セットとプロセッサとの
間で区別するハードウエア方法を使用させることができ
る。
【0097】mutex順序付け方式によって、モニタ
・ユニットは、最初の処理セット上の最初のプロセッサ
がモニタ・ユニットmutexレジスタを読み取ると直
ちに、リード成功を返すことが可能となることに注目す
べきであろう。他の処理セットは、同期して動作してい
るのであれば、最終的には追い付くことが保証される。
これらが追い付かない場合、既に同期が外れているが、
余分な発散が生じても害を及ぼすことはない。しかしな
がら、この場合も同様に、かかる速度を高めるための最
適化は、最終的には、最も遅い処理セットを待つ必要性
によって結局制限される。
・ユニットは、最初の処理セット上の最初のプロセッサ
がモニタ・ユニットmutexレジスタを読み取ると直
ちに、リード成功を返すことが可能となることに注目す
べきであろう。他の処理セットは、同期して動作してい
るのであれば、最終的には追い付くことが保証される。
これらが追い付かない場合、既に同期が外れているが、
余分な発散が生じても害を及ぼすことはない。しかしな
がら、この場合も同様に、かかる速度を高めるための最
適化は、最終的には、最も遅い処理セットを待つ必要性
によって結局制限される。
【0098】前述のように、適正にプログラムされたM
Pシステムは、実状態の一部へのプロセッサのアクセス
を制限し、他のプロセッサによって変更させないように
する。そうしないと、mutexの順序付けによって非
同期システムを決定性とすることができない。ソフトウ
エア不良によってこの制約が実施されなかったり、変更
されている実状態にプロセッサがアクセスするというこ
とが起こる可能性がある。これは、実状態へのアクセス
の順序付けが発散状になるために、比較対象の処理セッ
トの実状態に発散をもたらす可能性がある。これらのソ
フトウエア不良は、通常のMPシステムではめずらしい
ことではなく、難しいMPバグに至る。プログラムは、
それらが実際には行わないときに、データへのライト・
アクセスを有すると仮定する。システムのコンフィギュ
レーションを決める非同期ロックステップ方法は、これ
らの不良を比較的迅速に発見する方法を提供する。
Pシステムは、実状態の一部へのプロセッサのアクセス
を制限し、他のプロセッサによって変更させないように
する。そうしないと、mutexの順序付けによって非
同期システムを決定性とすることができない。ソフトウ
エア不良によってこの制約が実施されなかったり、変更
されている実状態にプロセッサがアクセスするというこ
とが起こる可能性がある。これは、実状態へのアクセス
の順序付けが発散状になるために、比較対象の処理セッ
トの実状態に発散をもたらす可能性がある。これらのソ
フトウエア不良は、通常のMPシステムではめずらしい
ことではなく、難しいMPバグに至る。プログラムは、
それらが実際には行わないときに、データへのライト・
アクセスを有すると仮定する。システムのコンフィギュ
レーションを決める非同期ロックステップ方法は、これ
らの不良を比較的迅速に発見する方法を提供する。
【0099】通常のMPマシンでは、mutexプログ
ラミングの誤りは、2つ以上のプロセッサのプログラム
が偶然、当該mutexによって保護しようとするデー
タへのアクセスを争う場合、誤った挙動に至る。これ
は、確率の低いイベントであるかもしれない。処理セッ
トの実状態を変更した後、長い間検出されないままとな
る可能性があり、不良が明るみに出るまで、形跡(明
証)は曖昧である可能性がある。
ラミングの誤りは、2つ以上のプロセッサのプログラム
が偶然、当該mutexによって保護しようとするデー
タへのアクセスを争う場合、誤った挙動に至る。これ
は、確率の低いイベントであるかもしれない。処理セッ
トの実状態を変更した後、長い間検出されないままとな
る可能性があり、不良が明るみに出るまで、形跡(明
証)は曖昧である可能性がある。
【0100】非同期ロックステップ・マシンでは、同じ
プログラミングの誤りが、比較対象の処理セットの実状
態を発散させる場合がある。比較される実状態の一致は
比較的容易にチェックされ(以下を参照)、発散は比較
的素早く、数命令以内に検出することができる。mut
exプログラミング・エラーを検出する問題は、各mu
texの目的について詳細な知識を必要とする複雑なも
のから、実状態の比較だけを必要とする機械的なものに
変換された。恐らくロジック・アナライザを用いて、実
状態の発散後の最新のプロセッサの挙動を検査すること
により、エラーの根本的な原因に直ちに到達するであろ
う。
プログラミングの誤りが、比較対象の処理セットの実状
態を発散させる場合がある。比較される実状態の一致は
比較的容易にチェックされ(以下を参照)、発散は比較
的素早く、数命令以内に検出することができる。mut
exプログラミング・エラーを検出する問題は、各mu
texの目的について詳細な知識を必要とする複雑なも
のから、実状態の比較だけを必要とする機械的なものに
変換された。恐らくロジック・アナライザを用いて、実
状態の発散後の最新のプロセッサの挙動を検査すること
により、エラーの根本的な原因に直ちに到達するであろ
う。
【0101】この変換は、アクセス・コンフリクトを生
ずる(trip over)確率を高めることはない。
これは、プログラムが実状態の問題エリアを巡視する
(visit)頻度に大きく依存する。しかしながら、
比較対象の各処理セット内でプロセッサが動作する方法
を変更すると、プログラミングの誤りが検出可能な実状
態の発散に至る可能性が高まる虞れがある。即ち、mu
texの不良を探すために、システムは、比較対象の処
理セット内のプロセッサの動作の順序が各処理セット内
において確実に異なるように構成することも可能であ
る。例えば、処理セットPUA内のプロセッサP1を、
故意に半分の速度に低下させることができる。これの最
も極端な例が発生するのは、処理セットPUA内におい
て、プロセッサP0がその全ての命令を完了することを
許され、次いでプロセッサP1が実行し、一方処理セッ
トPUB内において、プロセッサP1が完了し、次いで
プロセッサP0が実行するときである。これは、前述の
規則的な割り込みI/Oサイクル機構を用いることによ
って行うことができる。モニタ・ユニットは、この特定
の順序付けを実験として実施し、ソフトウエアのロック
不良(lockingfault)を検出するように構
成することができる。処理セットPUA上のプロセッサ
P0は、処理セットPUB上でプロセッサP1がストー
ルしている間に例えば、10000命令を実行するよう
に、あるいはその逆となるように構成することができ
る。勿論、この時プロセッサがストールしてI/Oを待
っている場合、モニタ・ユニットは、デッドロックを回
避するために、比較対象の処理セット上の適切なプロセ
ッサが進むことを許可しなければならない。
ずる(trip over)確率を高めることはない。
これは、プログラムが実状態の問題エリアを巡視する
(visit)頻度に大きく依存する。しかしながら、
比較対象の各処理セット内でプロセッサが動作する方法
を変更すると、プログラミングの誤りが検出可能な実状
態の発散に至る可能性が高まる虞れがある。即ち、mu
texの不良を探すために、システムは、比較対象の処
理セット内のプロセッサの動作の順序が各処理セット内
において確実に異なるように構成することも可能であ
る。例えば、処理セットPUA内のプロセッサP1を、
故意に半分の速度に低下させることができる。これの最
も極端な例が発生するのは、処理セットPUA内におい
て、プロセッサP0がその全ての命令を完了することを
許され、次いでプロセッサP1が実行し、一方処理セッ
トPUB内において、プロセッサP1が完了し、次いで
プロセッサP0が実行するときである。これは、前述の
規則的な割り込みI/Oサイクル機構を用いることによ
って行うことができる。モニタ・ユニットは、この特定
の順序付けを実験として実施し、ソフトウエアのロック
不良(lockingfault)を検出するように構
成することができる。処理セットPUA上のプロセッサ
P0は、処理セットPUB上でプロセッサP1がストー
ルしている間に例えば、10000命令を実行するよう
に、あるいはその逆となるように構成することができ
る。勿論、この時プロセッサがストールしてI/Oを待
っている場合、モニタ・ユニットは、デッドロックを回
避するために、比較対象の処理セット上の適切なプロセ
ッサが進むことを許可しなければならない。
【0102】割り込みの送出は、各プロセッサに対して
個々に決定性であればよい。割り込みを送出する前に、
比較対象の各処理セット毎に共通のグローバル状態に達
する必要はない。各プロセッサは、別個に割り込み同期
サイクルを発生し、割り込みを受け取りることができ、
mutex順序付け機構は、何にでも対処する。
個々に決定性であればよい。割り込みを送出する前に、
比較対象の各処理セット毎に共通のグローバル状態に達
する必要はない。各プロセッサは、別個に割り込み同期
サイクルを発生し、割り込みを受け取りることができ、
mutex順序付け機構は、何にでも対処する。
【0103】通常のMP処理セット内のプロセッサ間に
は隠された相互作用がある可能性があり、MP非同期ロ
ックステップ・マシンが動作するためには、規則的なm
utex方式に変換する必要がある。以下にその例をい
くつか示す。 1)2フラグ通信。
は隠された相互作用がある可能性があり、MP非同期ロ
ックステップ・マシンが動作するためには、規則的なm
utex方式に変換する必要がある。以下にその例をい
くつか示す。 1)2フラグ通信。
【0104】プロセッサP1はフラグFに1を書き込
み、データDが使用可能であることを示す。プロセッサ
P0はDを何らかの専用記憶部(private st
ore)に読み出し、Fに0を書き込む。
み、データDが使用可能であることを示す。プロセッサ
P0はDを何らかの専用記憶部(private st
ore)に読み出し、Fに0を書き込む。
【0105】これは、完全に有効な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更新。
ステムである。mutex MFによって管理されるF
へのアクセスを有することによって、これをmutex
制御システムに変換することができる。すると、動作は
次のようになる: P1 MFを獲得する P1 Fに1を書き込む P1 MFを解放する P0 MFを獲得する P0 Fを読み出す P0 Dを読み出す P0 Fに0を書き込む P0 MFを解放する 2)ページ・マップ、MMU更新。
【0106】プロセッサには、ハードウエアで自動的に
ページ・テーブルを維持するものがある。ページ・テー
ブルは、マシンの実状態に存在する。プロセッサ内のM
MUTLBは、通常、メモリ内のページ・テーブルのキ
ャッシュと見なすことができ、したがって、実状態には
大した影響を及ぼさない。しかしながら、TLBが、使
用し変更されたページ情報を自動的に主メモリのページ
・テーブルに書き込む場合、これは比較対象の処理セッ
ト上の多数のプロセッサ間で異なって書き込まれる可能
性がある。ここでは、ソフトウエアのmutexは役に
立たない。プログラムは、種々のプロセッサのハードウ
エアによって変更され得るページ・テーブルへのアクセ
スを有する。ハードウエアは、mutex方式について
は何も知らない。このための解決の1つは、ページ・テ
ーブルのハードウエアによる更新を避けることである。
ページ・テーブルの変更は、ソフトウエアによって、ペ
ージ・ミス例外ルーチンによって行うことができる。ミ
ス・ルーチンおよびページ・テーブルにアクセスするそ
の他のコードはmutexを使うことができ、モニタ・
ユニットのmutex順序付け方式が、決定論の問題を
解決する。これがうまく作用するためには、ページ・ミ
ス例外が正確でなければならない。
ページ・テーブルを維持するものがある。ページ・テー
ブルは、マシンの実状態に存在する。プロセッサ内のM
MUTLBは、通常、メモリ内のページ・テーブルのキ
ャッシュと見なすことができ、したがって、実状態には
大した影響を及ぼさない。しかしながら、TLBが、使
用し変更されたページ情報を自動的に主メモリのページ
・テーブルに書き込む場合、これは比較対象の処理セッ
ト上の多数のプロセッサ間で異なって書き込まれる可能
性がある。ここでは、ソフトウエアのmutexは役に
立たない。プログラムは、種々のプロセッサのハードウ
エアによって変更され得るページ・テーブルへのアクセ
スを有する。ハードウエアは、mutex方式について
は何も知らない。このための解決の1つは、ページ・テ
ーブルのハードウエアによる更新を避けることである。
ページ・テーブルの変更は、ソフトウエアによって、ペ
ージ・ミス例外ルーチンによって行うことができる。ミ
ス・ルーチンおよびページ・テーブルにアクセスするそ
の他のコードはmutexを使うことができ、モニタ・
ユニットのmutex順序付け方式が、決定論の問題を
解決する。これがうまく作用するためには、ページ・ミ
ス例外が正確でなければならない。
【0107】基本オペレーティング・システムによるメ
モリ内のページ・テーブルの更新は、特に、もはや有効
でないエントリのフラッシュ(flushing)は、
決定性動作を保証するために、プロセッサ間で互いに調
整しなければならない。エントリにロードするためのハ
ードウエアによるページ・テーブルのテーブル・ウオー
ク(table walk)は、当該エントリに対する
他のプロセッサの変更と互いに調整しなければならな
い。これは、ページ・ミスの処理を、ハードウエアのテ
ーブル・ウオークではなく、ソフトウエアの例外で行え
ば、容易である。mutex順序付けシステムは、この
問題を処理する。 3)DMA I/Oデバイスは、直接メモリアクセス(DMA)を用
いて効率的にシステムの実状態を読み取ったりあるいは
書き込むことが多い。非同期ロックステップ・マシンへ
のDMAの組み込みについて、これより説明する。
モリ内のページ・テーブルの更新は、特に、もはや有効
でないエントリのフラッシュ(flushing)は、
決定性動作を保証するために、プロセッサ間で互いに調
整しなければならない。エントリにロードするためのハ
ードウエアによるページ・テーブルのテーブル・ウオー
ク(table walk)は、当該エントリに対する
他のプロセッサの変更と互いに調整しなければならな
い。これは、ページ・ミスの処理を、ハードウエアのテ
ーブル・ウオークではなく、ソフトウエアの例外で行え
ば、容易である。mutex順序付けシステムは、この
問題を処理する。 3)DMA I/Oデバイスは、直接メモリアクセス(DMA)を用
いて効率的にシステムの実状態を読み取ったりあるいは
書き込むことが多い。非同期ロックステップ・マシンへ
のDMAの組み込みについて、これより説明する。
【0108】DMAを処理する1つの方法は、プロセッ
サがI/Oデバイス内のコマンド・レジスタに書き込
み、DMAが完了し、I/Oデバイスが完了ステータス
・レジスタまたは割り込みを与えることである。このシ
ーケンスは、I/O通信に用いられる主メモリのエリア
へのアクセスを制御するmutexと同様に作用する。
プロセッサは、通常、I/Oデバイスがこの通信エリア
を転送している間、この通信エリアの読み取りまたは書
き込みを回避する。これは、通常のプログラミングによ
って行うことができる。非同期ロックステップ・マシン
では、モニタ・ユニット18は、以前に説明したI/O
サイクルの比較(あるいは、完了通知のために割り込み
を用いる場合は、割り込みの送出)に必要なもの以外
に、余分な順序付けを行う必要はない。通常の処理セッ
トからの従来の順序付けの要件は、他の全ての問題を扱
う。モニタ・ユニットは、I/Oデバイスからメモリ・
サイクルへの単一のDMAアクセスを、比較対象の各処
理セット毎に変換することができる。ライト・サイクル
では、全ての処理セットに書き込む。リード・サイクル
では、全ての処理セットからのリード・データを比較す
ることができる。
サがI/Oデバイス内のコマンド・レジスタに書き込
み、DMAが完了し、I/Oデバイスが完了ステータス
・レジスタまたは割り込みを与えることである。このシ
ーケンスは、I/O通信に用いられる主メモリのエリア
へのアクセスを制御するmutexと同様に作用する。
プロセッサは、通常、I/Oデバイスがこの通信エリア
を転送している間、この通信エリアの読み取りまたは書
き込みを回避する。これは、通常のプログラミングによ
って行うことができる。非同期ロックステップ・マシン
では、モニタ・ユニット18は、以前に説明したI/O
サイクルの比較(あるいは、完了通知のために割り込み
を用いる場合は、割り込みの送出)に必要なもの以外
に、余分な順序付けを行う必要はない。通常の処理セッ
トからの従来の順序付けの要件は、他の全ての問題を扱
う。モニタ・ユニットは、I/Oデバイスからメモリ・
サイクルへの単一のDMAアクセスを、比較対象の各処
理セット毎に変換することができる。ライト・サイクル
では、全ての処理セットに書き込む。リード・サイクル
では、全ての処理セットからのリード・データを比較す
ることができる。
【0109】他のDMA技法は、DMAを管理するコマ
ンド・バッファを主メモリに入れることである。こうす
る場合、プログラムは、非同期決定性を維持することを
保証するために、特別な注意を必要とする。特別な注意
を払わないと、DMA完了ステータスを主メモリに書き
込む場合、処理セットPUAは、完了ステータスが更新
される前に、これをサンプリングする可能性があり、一
方処理セットPUBは、これが更新された後に、サンプ
リングする可能性がある。
ンド・バッファを主メモリに入れることである。こうす
る場合、プログラムは、非同期決定性を維持することを
保証するために、特別な注意を必要とする。特別な注意
を払わないと、DMA完了ステータスを主メモリに書き
込む場合、処理セットPUAは、完了ステータスが更新
される前に、これをサンプリングする可能性があり、一
方処理セットPUBは、これが更新された後に、サンプ
リングする可能性がある。
【0110】コマンド・バッファおよびステータス・バ
ッファが主メモリにある場合に、プロセッサ−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機構を効
果的に行使することができる。
ッファが主メモリにある場合に、プロセッサ−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機構を効
果的に行使することができる。
【0111】前述の例では、多数のDMA開始および停
止レジスタを備えることができ、各レジスタは別個のI
/Oデバイス毎にDMAアクセスを制御する。プロセッ
サが1つのデバイスのみのために主メモリ内のDMA制
御ブロックにアクセスしている場合、全てのデバイスに
対するDMAを禁止する必要はない。モニタ・ユニット
は、どのデバイスから各DMAサイクルが来るのかを把
握するように構成されている。
止レジスタを備えることができ、各レジスタは別個のI
/Oデバイス毎にDMAアクセスを制御する。プロセッ
サが1つのデバイスのみのために主メモリ内のDMA制
御ブロックにアクセスしている場合、全てのデバイスに
対するDMAを禁止する必要はない。モニタ・ユニット
は、どのデバイスから各DMAサイクルが来るのかを把
握するように構成されている。
【0112】次に、サイン(シグネチャ)および解析器
(アナライザ)の装備について説明する。非同期処理セ
ットは、それらの同一の実状態に対して全く同一の変更
を実行しても、詳細は完全に異なるように見える。
(アナライザ)の装備について説明する。非同期処理セ
ットは、それらの同一の実状態に対して全く同一の変更
を実行しても、詳細は完全に異なるように見える。
【0113】例えば、1つの処理セット内のキャッシュ
に保持されている変数を、別の処理セットの主メモリに
移管することができる。主メモリの更新サイクルは、異
なる順序で実行することができる。1つの処理セット上
での複数のメモリ・ライトは、単一のサイクルに併合す
ることができ、一方これらは別の処理セット上に多数の
サイクルを有することができる。非同期ロックステップ
・システムにおけるI/Oサイクルは容易に比較するこ
とができるが、速度の最適化では、処理セットの実状態
に対する変更の比較が難しくなる場合がある。実状態に
注意しなくとも、適正なフォールト・トレラント・マシ
ンを構築することが可能である。しかしながら、ハード
ウエアおよびmutexソフトウエア双方の不良を素早
く診断するためには、実状態における発散を素早く検出
することが望ましい。これは、図15に示すように、サ
イン(シグネチャ)発生器150およびロジック・アナ
ライザ152を含む、サイン機構をプロセッサに追加す
ることによって行うことができる。
に保持されている変数を、別の処理セットの主メモリに
移管することができる。主メモリの更新サイクルは、異
なる順序で実行することができる。1つの処理セット上
での複数のメモリ・ライトは、単一のサイクルに併合す
ることができ、一方これらは別の処理セット上に多数の
サイクルを有することができる。非同期ロックステップ
・システムにおけるI/Oサイクルは容易に比較するこ
とができるが、速度の最適化では、処理セットの実状態
に対する変更の比較が難しくなる場合がある。実状態に
注意しなくとも、適正なフォールト・トレラント・マシ
ンを構築することが可能である。しかしながら、ハード
ウエアおよびmutexソフトウエア双方の不良を素早
く診断するためには、実状態における発散を素早く検出
することが望ましい。これは、図15に示すように、サ
イン(シグネチャ)発生器150およびロジック・アナ
ライザ152を含む、サイン機構をプロセッサに追加す
ることによって行うことができる。
【0114】実状態に対する変更は、プロセッサによっ
て行われる。実状態が、プロセッサ内部のレジスタ値を
含むと考えると、レジスタに書き込むあらゆる命令が実
状態を更新することになる。限られた帯域幅のチャネル
を通じて、同期システムの動作を詳細に比較する機構を
備えることができる。同じサイン機構を用いて、非同期
決定性システム(asynchronous dete
rministicsystem)における、全てのプ
ロセッサ・レジスタ・ライト・データおよび命令を比較
することができる。
て行われる。実状態が、プロセッサ内部のレジスタ値を
含むと考えると、レジスタに書き込むあらゆる命令が実
状態を更新することになる。限られた帯域幅のチャネル
を通じて、同期システムの動作を詳細に比較する機構を
備えることができる。同じサイン機構を用いて、非同期
決定性システム(asynchronous dete
rministicsystem)における、全てのプ
ロセッサ・レジスタ・ライト・データおよび命令を比較
することができる。
【0115】プロセッサには、それらの内部動作のサイ
ンを作成するための特別なハードウエアが追加されてい
る。サインは、プロセッサによって書き込まれるデー
タ、書き込まれるレジスタ、および命令の順序によっ
て、幾分複雑な影響を受ける。サインは、プロセッサの
実行順序には係らず、プログラマが意図した実際の順序
で、各命令が引っ込められるときに更新される。これ
は、プロセッサが完全に非同期であるかのように、ある
決定された方法で行うことができる。時々、モニタ・ユ
ニットは比較対象の異なる処理セット上のプロセッサ間
でサインを比較する。これを行うための便利な方法は、
前述のように、プロセッサがその予測可能な割り込み更
新サイクルを実行する直前に、プロセッサにそれらの現
在のサインを、それらの各サイン発生器150からモニ
タ・ユニットに、書き込ませることである。同等のプロ
セッサが異なるサインを有することをモニタ・ユニット
が検出した場合、補正処置を取らせることができる。
ンを作成するための特別なハードウエアが追加されてい
る。サインは、プロセッサによって書き込まれるデー
タ、書き込まれるレジスタ、および命令の順序によっ
て、幾分複雑な影響を受ける。サインは、プロセッサの
実行順序には係らず、プログラマが意図した実際の順序
で、各命令が引っ込められるときに更新される。これ
は、プロセッサが完全に非同期であるかのように、ある
決定された方法で行うことができる。時々、モニタ・ユ
ニットは比較対象の異なる処理セット上のプロセッサ間
でサインを比較する。これを行うための便利な方法は、
前述のように、プロセッサがその予測可能な割り込み更
新サイクルを実行する直前に、プロセッサにそれらの現
在のサインを、それらの各サイン発生器150からモニ
タ・ユニットに、書き込ませることである。同等のプロ
セッサが異なるサインを有することをモニタ・ユニット
が検出した場合、補正処置を取らせることができる。
【0116】サイン発生に可能な比較には、異なる複数
のレベルがある。レベル1の比較は、例えば、SPAR
Cの「st」動作のように、単にライト・サイクルから
主メモリへのサインを構築することができる。各ライト
・サイクルのアドレスおよびデータは、プロセッサのサ
インを更新することができる。これは、レジスタの内容
とは離れた実状態における変化を検出する。発散値が、
見えるようになることなく、プロセッサ内部に長時間潜
んでいる可能性がある。これが見えるようになったとき
には、発散の理由を発見することは困難であろう。ロジ
ック・アナライザは、これを発見するために、任意に深
い記憶を必要とする。ここで、サイクルの併合(即ち、
ロード/格納ユニットが2つの隣接する小さな格納動作
を1つの大きな格納動作に併合する傾向)は禁止すべき
ことを注記しておく。
のレベルがある。レベル1の比較は、例えば、SPAR
Cの「st」動作のように、単にライト・サイクルから
主メモリへのサインを構築することができる。各ライト
・サイクルのアドレスおよびデータは、プロセッサのサ
インを更新することができる。これは、レジスタの内容
とは離れた実状態における変化を検出する。発散値が、
見えるようになることなく、プロセッサ内部に長時間潜
んでいる可能性がある。これが見えるようになったとき
には、発散の理由を発見することは困難であろう。ロジ
ック・アナライザは、これを発見するために、任意に深
い記憶を必要とする。ここで、サイクルの併合(即ち、
ロード/格納ユニットが2つの隣接する小さな格納動作
を1つの大きな格納動作に併合する傾向)は禁止すべき
ことを注記しておく。
【0117】レベル2の比較は、全ての主メモリのライ
トおよび全てのレジスタのライトからもサインを構築す
る。これに必要なハードウエアは増えるが、有限のアナ
ライザの記憶要件の範囲内で、発散が素早く検出される
ことが保証される。
トおよび全てのレジスタのライトからもサインを構築す
る。これに必要なハードウエアは増えるが、有限のアナ
ライザの記憶要件の範囲内で、発散が素早く検出される
ことが保証される。
【0118】レベル3の比較は、メモリ・ライト、レジ
スタ・ライトおよびメモリ・リードからサインを構築す
る。不良システムにおいて、各プロセッサからの全ての
ライトから、異なる実状態についても、同じサインを生
成することは可能である。何故なら、1つのプロセッサ
からのライトは別のプロセッサからのライトを上書き
し、プロセッサの順序付けは処理セット間で異なるから
である。これは、ライト・データ・サインを変化させる
ことによって最終的に観察されたときに、方法1および
2によって検出することができるが、データ・リードお
よび実状態を用いることができる、一層巧妙な検出方法
がある。レジスタ・リード・データは、このように発散
することはあり得ない。何故なら、レジスタはローカル
・プロセッサによってのみ書き込むことができるからで
ある。
スタ・ライトおよびメモリ・リードからサインを構築す
る。不良システムにおいて、各プロセッサからの全ての
ライトから、異なる実状態についても、同じサインを生
成することは可能である。何故なら、1つのプロセッサ
からのライトは別のプロセッサからのライトを上書き
し、プロセッサの順序付けは処理セット間で異なるから
である。これは、ライト・データ・サインを変化させる
ことによって最終的に観察されたときに、方法1および
2によって検出することができるが、データ・リードお
よび実状態を用いることができる、一層巧妙な検出方法
がある。レジスタ・リード・データは、このように発散
することはあり得ない。何故なら、レジスタはローカル
・プロセッサによってのみ書き込むことができるからで
ある。
【0119】サインの比較と組み合わせることにより、
プロセッサ内に組み込まれた小さなロジック・アナライ
ザは、mutexプログラミングの誤りのための優れた
デバッグ機能を提供することができる。ロジック・アナ
ライザ152の記憶要件は、あるサイン比較から次のサ
イン比較までで十分である。プロセッサ内に組み込まれ
たアナライザは、実行される命令、主メモリから読み出
されるデータ、レジスタに書き込まれるデータ、および
主メモリに書き込まれるデータの完全なビューを有する
ことができる。異なる処理セットおよびプロセッサ内の
アナライザ間における実行時の通信は不要である。
プロセッサ内に組み込まれた小さなロジック・アナライ
ザは、mutexプログラミングの誤りのための優れた
デバッグ機能を提供することができる。ロジック・アナ
ライザ152の記憶要件は、あるサイン比較から次のサ
イン比較までで十分である。プロセッサ内に組み込まれ
たアナライザは、実行される命令、主メモリから読み出
されるデータ、レジスタに書き込まれるデータ、および
主メモリに書き込まれるデータの完全なビューを有する
ことができる。異なる処理セットおよびプロセッサ内の
アナライザ間における実行時の通信は不要である。
【0120】サインが異なる場合、全てのプロセッサに
おけるロジック・アナライザをトリガすることができ
る。割り込みによって、処理セットに、それらの(発散
した)状態をディスクにダンプすることができる。ま
た、各プロセッサからのロジック・アナライザ・データ
も、ダンプすることができる。システムは、人による分
析のために、ダンプ・データを送り出すことができる。
可能であれば、処理セットは実行し続けることができ
る。
おけるロジック・アナライザをトリガすることができ
る。割り込みによって、処理セットに、それらの(発散
した)状態をディスクにダンプすることができる。ま
た、各プロセッサからのロジック・アナライザ・データ
も、ダンプすることができる。システムは、人による分
析のために、ダンプ・データを送り出すことができる。
可能であれば、処理セットは実行し続けることができ
る。
【0121】以上のように、フォールト・トレラント・
マイクロプロセッサ・コンピュータ・システムを形成す
るのに適した、非同期処理セットを採用したマイクロプ
ロセッサ・コンピュータ・システムについて記載した。
本発明の一実施形態は、複数の処理セットまたはプロセ
ッサの内1つ以上が、当該処理セットまたはプロセッサ
の内別の1つ以上と非同期に動作するあらゆるシステム
に適用可能である。
マイクロプロセッサ・コンピュータ・システムを形成す
るのに適した、非同期処理セットを採用したマイクロプ
ロセッサ・コンピュータ・システムについて記載した。
本発明の一実施形態は、複数の処理セットまたはプロセ
ッサの内1つ以上が、当該処理セットまたはプロセッサ
の内別の1つ以上と非同期に動作するあらゆるシステム
に適用可能である。
【0122】本発明の種々の実施形態は、1つ以上の次
にあげる特徴を含む、独特かつ好ましい特徴を備えるこ
とができる: −同期されていない(non−synchoroniz
ed)処理セットを用いるロックステップ・システム; −非同期(asynchronous)プロセッサの決
定性動作; −無同期(unsynchronized)システムに
おける決定性割り込みの送出; −モニタ・ユニットによる非同期的比較および同期化; −非同期的な決定論のためのmutexの順序付け; −mutexの順序付けのためのモニタ・ユニット; −mutex不良発見のための非同期ロックステップ; −非同期的な決定論を備えたDMA機構。
にあげる特徴を含む、独特かつ好ましい特徴を備えるこ
とができる: −同期されていない(non−synchoroniz
ed)処理セットを用いるロックステップ・システム; −非同期(asynchronous)プロセッサの決
定性動作; −無同期(unsynchronized)システムに
おける決定性割り込みの送出; −モニタ・ユニットによる非同期的比較および同期化; −非同期的な決定論のためのmutexの順序付け; −mutexの順序付けのためのモニタ・ユニット; −mutex不良発見のための非同期ロックステップ; −非同期的な決定論を備えたDMA機構。
【0123】本発明の一実施形態では、異なるマスク・
バーションのプロセッサを用いて、ロックステップ・フ
ォールト・トレラント・システムを構築可能である。ま
た、重要なクロックの位相ロック制御の必要性がないの
で、従来の同期システムよりも格段に一般的なハードウ
エアによって、ロックステップ・フォールト・トレラン
ト・システムを構築することができる。ロックステップ
・フォールト・トレランスは、同期手法を用いる場合よ
りも、大幅に縮小したハードウエアの再設計によって行
うことができる。非同期プロセッサは、同じ設計に対し
て2倍のトランジスタを用いる場合があるが、同期シス
テムの1/10の電力消費で稼働することができる。プ
ロセッサの設計者にとって使用可能なトランジスタ数が
増えるので、非同期設計はプロセッサにとって普通のこ
と(commonplace)となる可能性があり、本
発明の一実施形態は、かかるプロセッサを用いたロック
ステップ・システムの生成を可能にするものである。モ
ニタ・ユニットの注意深い設計により、完全に正確でな
く単に再起動可能なI/Oデータ・アクセス例外が許さ
れる。これは、プロセッサ内にバス動作のための設計自
由度を与える。
バーションのプロセッサを用いて、ロックステップ・フ
ォールト・トレラント・システムを構築可能である。ま
た、重要なクロックの位相ロック制御の必要性がないの
で、従来の同期システムよりも格段に一般的なハードウ
エアによって、ロックステップ・フォールト・トレラン
ト・システムを構築することができる。ロックステップ
・フォールト・トレランスは、同期手法を用いる場合よ
りも、大幅に縮小したハードウエアの再設計によって行
うことができる。非同期プロセッサは、同じ設計に対し
て2倍のトランジスタを用いる場合があるが、同期シス
テムの1/10の電力消費で稼働することができる。プ
ロセッサの設計者にとって使用可能なトランジスタ数が
増えるので、非同期設計はプロセッサにとって普通のこ
と(commonplace)となる可能性があり、本
発明の一実施形態は、かかるプロセッサを用いたロック
ステップ・システムの生成を可能にするものである。モ
ニタ・ユニットの注意深い設計により、完全に正確でな
く単に再起動可能なI/Oデータ・アクセス例外が許さ
れる。これは、プロセッサ内にバス動作のための設計自
由度を与える。
【0124】以上、少なくとも1つの処理セットが他の
処理セットとは非同期に動作可能な複数の処理セットを
含む、フォールト・トレラント・マルチプロセッサ・シ
ステムのためのモニタについて説明した。モニタは、処
理セットから出力されるI/O動作を受け取るように接
続可能であり、I/O動作をバッファする手段と、処理
セットの同等の動作状態を判定するために、1つの処理
セットから出力されたI/O動作を他の処理セットのた
めにバッファされているI/O動作と比較する手段と、
これら処理セットの同等の動作状態と判定したときにの
み、状態変更I/O動作を発行する手段と、から構成さ
れる。
処理セットとは非同期に動作可能な複数の処理セットを
含む、フォールト・トレラント・マルチプロセッサ・シ
ステムのためのモニタについて説明した。モニタは、処
理セットから出力されるI/O動作を受け取るように接
続可能であり、I/O動作をバッファする手段と、処理
セットの同等の動作状態を判定するために、1つの処理
セットから出力されたI/O動作を他の処理セットのた
めにバッファされているI/O動作と比較する手段と、
これら処理セットの同等の動作状態と判定したときにの
み、状態変更I/O動作を発行する手段と、から構成さ
れる。
【0125】本発明の特定実施形態について説明した
が、特許請求の範囲に定義した本発明の精神および範囲
以内において、多くの変更/追加および/または置換が
可能であることは理解できるであろう。
が、特許請求の範囲に定義した本発明の精神および範囲
以内において、多くの変更/追加および/または置換が
可能であることは理解できるであろう。
【図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に関連す
るアドレス・マップを示す図である。
概略ブロック図である。図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 (29)
- 【請求項1】 複数の処理セットを含み、少なくとも1
つの処理セットが他の処理セットとは非同期に動作可能
なフォールト・トレラント・マルチプロセッサ・システ
ムのためのモニタであって、該モニタが、前記処理セッ
トから出力されるI/O動作を受け取るように接続可能
であり、前記I/O動作をバッファし、前記処理セット
の同等の動作状態を判定するために、1つの処理セット
から出力されたI/O動作を、他の処理セットのために
バッファされたI/O動作と比較し、該処理セットの同
等の動作状態を判定したときにのみ、状態変更I/O動
作を発行するように動作可能である、モニタ。 - 【請求項2】 請求項1記載のモニタにおいて、前記状
態変更動作が、副作用を伴うリード命令である、モニ
タ。 - 【請求項3】 請求項1記載のモニタにおいて、前記状
態変更命令が、ライト命令である、モニタ。 - 【請求項4】 請求項1記載のモニタにおいて、前記処
理セットの同等の動作状態を多数決によって判定する、
モニタ。 - 【請求項5】 請求項1記載のモニタにおいて、前記処
理セットの同等の動作状態は、全ての処理セットが動作
を出力したときに判定する、モニタ。 - 【請求項6】 請求項1記載のモニタにおいて、前記処
理セットの同等の動作は、監視対象の処理セットの数に
応じて変化するポリシーにしたがって判定する、モニ
タ。 - 【請求項7】 請求項1記載のモニタにおいて、処理セ
ットからの最初の受け取り時に、前記モニタから直接副
作用のないリード命令を発行する、モニタ。 - 【請求項8】 請求項1記載のモニタにおいて、該モニ
タが、前記I/O動作における第1の不変情報に応じ
て、各I/O動作毎にバッファを決定し、 前記I/O動作における第2の不変情報に応じて、識別
されたバッファ内におけるI/O動作の順序を決定し、 前記処理セットに対する、同等のバッファ内の同等の位
置のI/O動作における同等の第3の不変情報に基づい
て、処理セットの同等の動作を判定する、ように動作可
能である、モニタ。 - 【請求項9】 請求項8記載のモニタにおいて、前記第
1の不変情報が、 処理セットと、 I/O動作型と、 ある処理セット内のプロセッサ番号と、から選択される
I/O動作の少なくとも1つのパラメータである、モニ
タ。 - 【請求項10】 請求項8記載のモニタにおいて、前記
第2の不変情報が、 アドレス・フェーズの順序付けと、 順序番号と、から選択されるI/O動作の少なくとも1
つのパラメータである、モニタ。 - 【請求項11】 請求項8記載のモニタにおいて、前記
第3の不変情報が、 ライト値データと、 I/Oコマンドと、 アドレスと、から選択されるI/O動作の少なくとも1
つのパラメータである、モニタ。 - 【請求項12】 請求項8記載のモニタにおいて、該モ
ニタが、I/O動作の変動情報を無視するように動作可
能である、モニタ。 - 【請求項13】 請求項1記載のモニタにおいて、各処
理セットが対称マルチプロセッサであり、前記モニタ
が、前記CPUセットのためにmutexの同等の順序
付けを保証し、それぞれの処理セットのプロセッサによ
る前記それぞれの資源へのアクセスを制御することによ
って、前記処理セットの同等の動作状態を維持するよう
に構成されている、モニタ。 - 【請求項14】 フォールト・トレラント・マルチプロ
セッサ・コンピュータ・システムであって、 複数の処理セットであって、少なくとも第1の処理セッ
トが、第2の処理セットとは非同期に動作可能な、処理
セットと、 前記処理セットから出力されるI/O動作を受け取るよ
うに接続されたモニタであって、前記I/O動作をバッ
ファし、前記処理セットの同等の動作状態を判定するた
めに、1つの処理セットから出力されたI/O動作を、
他の処理セットのためにバッファされたI/O動作と比
較し、該処理セットの同等の動作状態を判定したときの
み、状態変更I/O動作を発行するように動作可能に構
成されたモニタと、を備えるフォールト・トレラント・
マルチプロセッサ・コンピュータ・システム。 - 【請求項15】 請求項14記載のシステムにおいて、
前記状態変更動作が、副作用を伴うリード命令である、
システム。 - 【請求項16】 請求項14記載のシステムにおいて、
前記状態変更命令が、ライト命令である、システム。 - 【請求項17】 請求項14記載のシステムにおいて、
前記処理セットの同等の動作状態を多数決によって判定
する、システム。 - 【請求項18】 請求項14記載のシステムにおいて、
前記処理セットの同等の動作状態は、全ての処理セット
が動作を出力したときに判定する、システム。 - 【請求項19】 請求項14記載のシステムにおいて、
前記処理セットの同等の動作状態は、監視対象の処理セ
ットの数に応じて変化するポリシーにしたがって判定す
る、システム。 - 【請求項20】 請求項14記載のシステムにおいて、
処理セットからの最初の受け取り時に、前記モニタから
直接副作用のないリード命令を発行する、システム。 - 【請求項21】 請求項14記載のシステムにおいて、
前記モニタが、 前記I/O動作における第1の不変情報に応じて、各I
/O動作毎にバッファを決定し、 前記I/O動作における第2の不変情報に応じて、識別
されたバッファ内におけるI/O動作の順序を決定し、 前記処理セットに対する、同等のバッファ内の同等の位
置のI/O動作における同等の第3の不変情報に基づい
て、処理セットの同等の動作を判定する、ように動作可
能である、システム。 - 【請求項22】 請求項21記載のシステムにおいて、
前記第1の不変情報が、 処理セットと、 I/O動作型と、 ある処理セット内のプロセッサ番号と、から選択される
I/O動作の少なくとも1つのパラメータである、シス
テム。 - 【請求項23】 請求項21記載のシステムにおいて、
前記第2の不変情報が、 アドレス・フェーズの順序付けと、 順序番号と、から選択されるI/O動作の少なくとも1
つのパラメータである、システム。 - 【請求項24】 請求項21記載のシステムにおいて、
前記第3の不変情報が、 ライト値データと、 I/Oコマンドと、 アドレスと、から選択されるI/O動作の少なくとも1
つのパラメータである、システム。 - 【請求項25】 請求項21記載のシステムにおいて、
前記モニタが、I/O動作の変動情報を無視するように
動作可能である、システム。 - 【請求項26】 請求項14記載のシステムにおいて、
各処理セットが、複数のプロセッサを備える、対称マル
チプロセッサである、システム。 - 【請求項27】 請求項26記載のシステムであって、
前記処理セットのプロセッサによって共有される、少な
くとも1つの資源を各処理セット毎に備え、前記モニタ
が、前記CPUセットのために、mutexの同等の順
序付けを保証し、それぞれの処理セットのプロセッサに
よる前記それぞれの資源へのアクセスを制御することに
より、前記処理セットの同等の動作状態を維持するよう
に構成されている、システム。 - 【請求項28】 少なくとも第1の処理セットが第2の
処理セットとは非同期に動作可能な、複数の処理セット
と、前記処理セットから出力されるI/O動作を受け取
るように接続されたモニタとを備えた、フォールト・ト
レラント・マルチプロセッサ・コンピュータ・システム
の動作方法であって、 I/O動作をバッファするステップと、 前記処理セットの同等の動作状態を判定するために、1
つの処理セットから出力されたI/O動作を、他の処理
セットのためにバッファされたI/O動作と比較するス
テップと、 前記処理セットの同等の動作状態を判定したときのみ、
状態変更I/O動作を発行するステップと、を含む方
法。 - 【請求項29】 複数の処理セットを含み、該処理セッ
トの少なくとも1つが、該処理セットの他の1つとは非
同期に動作可能なマルチプロセッサ・コンピュータ・シ
ステムのためのモニタ・ユニットであって、該モニタ・
ユニットが、前記処理セットのそれぞれのI/Oバスと
デバイス・バスとの間のブリッジを形成し、 前記処理セットからの前記I/Oバス上のI/O動作を
バッファする手段と、 前記I/O動作を比較する手段と、 前記処理セットの同等の動作状態を判定したときのみ、
状態変更I/O動作を発行する手段と、を備えるモニ
タ。
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/107973 | 1998-06-30 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2000040073A true JP2000040073A (ja) | 2000-02-08 |
Family
ID=40944907
Family Applications (3)
| 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 | コンピュ―タ・システムにおけるバス・エラ―処理 |
| JP11186108A Pending JP2000040075A (ja) | 1998-06-30 | 1999-06-30 | マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ |
Family Applications After (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP11186088A Pending JP2000040038A (ja) | 1998-06-30 | 1999-06-30 | コンピュ―タ・システムにおけるバス・エラ―処理 |
| JP11186108A Pending JP2000040075A (ja) | 1998-06-30 | 1999-06-30 | マルチプロセッサ・コンピュ―タ・システムにおける決定論、ならびにそのためのモニタおよびプロセッサ |
Country Status (3)
| Country | Link |
|---|---|
| US (4) | US6256753B1 (ja) |
| EP (3) | EP0969374A2 (ja) |
| JP (3) | JP2000040073A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008542878A (ja) * | 2005-05-24 | 2008-11-27 | マラソン テクノロジーズ コーポレイション | 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム |
Families Citing this family (82)
| 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 |
| US7099374B2 (en) * | 2001-03-14 | 2006-08-29 | Mercury Computer Systems, Inc. | Wireless communication systems and methods for long-code communications for regenerative multiple user detection involving matched-filter outputs |
| 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 |
| US8423077B2 (en) * | 2002-12-18 | 2013-04-16 | Broadcom Corporation | Multi-processor platform for wireless communication terminal having partitioned protocol stack |
| 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 |
| US8799706B2 (en) | 2004-03-30 | 2014-08-05 | Hewlett-Packard Development Company, L.P. | Method and system of exchanging information between processors |
| US20050240806A1 (en) * | 2004-03-30 | 2005-10-27 | Hewlett-Packard Development Company, L.P. | Diagnostic memory dump method in a redundant processor |
| 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 |
| US7856569B2 (en) | 2004-10-25 | 2010-12-21 | Robert Bosch Gmbh | Method and device for a switchover and for a data comparison in a computer system having at least two processing units |
| WO2006045790A1 (de) * | 2004-10-25 | 2006-05-04 | Robert Bosch Gmbh | 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 |
| WO2009015276A2 (en) * | 2007-07-24 | 2009-01-29 | Ge Aviation Systems Llc | High integrity and high availability computer processing module |
| 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 | 株式会社デンソー | 車両用記憶管理装置 |
| JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
| 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 |
| EP2537091A4 (en) * | 2010-02-16 | 2014-08-06 | Freescale Semiconductor Inc | DATA PROCESSING METHOD, DATA PROCESSOR AND DEVICE WITH A DATA PROCESSOR |
| US8499193B2 (en) * | 2010-07-30 | 2013-07-30 | Honeywell International Inc. | Integrated dissimilar high integrity processing |
| EP2633408B1 (en) * | 2010-10-28 | 2018-08-22 | Data Device Corporation | 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 | 삼성전자주식회사 | 에러 검출 방법 및 장치 |
| US9342358B2 (en) * | 2012-09-14 | 2016-05-17 | General Electric Company | System and method for synchronizing processor instruction execution |
| 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 |
| US12254311B2 (en) * | 2022-01-28 | 2025-03-18 | International Business Machines Corporation | Automatic extract, transform and load accelerator for data platform in distributed computing environment |
| US20240338284A1 (en) * | 2023-04-07 | 2024-10-10 | Apple Inc. | Modular redundancy |
Family Cites Families (57)
| 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 |
| JPS58501602A (ja) * | 1981-09-18 | 1983-09-22 | クリスチャン ロプシング エ−・エス | マルチプロセッサ・コンピュ−タシステム |
| 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 | マルチプロセッサ方式 |
| US4965717A (en) * | 1988-12-09 | 1990-10-23 | Tandem Computers Incorporated | Multiple processor system having shared memory with private-write capability |
| AU625293B2 (en) * | 1988-12-09 | 1992-07-09 | Tandem Computers Incorporated | Synchronization of fault-tolerant computer system having multiple processors |
| 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., Kawasaki | 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 |
| DE69325769T2 (de) * | 1992-11-04 | 2000-03-23 | Digital Equipment Corp., Maynard | Erkennung von Befehlssynchronisationsfehlern |
| US6151689A (en) * | 1992-12-17 | 2000-11-21 | Tandem Computers Incorporated | Detecting and isolating errors occurring in data communication in a multiple processor system |
| US6496940B1 (en) * | 1992-12-17 | 2002-12-17 | Compaq Computer Corporation | Multiple processor system with standby sparing |
| US5675807A (en) * | 1992-12-17 | 1997-10-07 | Tandem Computers Incorporated | Interrupt message delivery identified by storage location of received interrupt data |
| 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 |
| EP0616274B1 (de) | 1993-03-16 | 1996-06-05 | Siemens Aktiengesellschaft | 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 |
| AU680974B2 (en) | 1993-12-01 | 1997-08-14 | Marathon Technologies Corporation | Fault resilient/fault tolerant computing |
| DE69507360T2 (de) * | 1994-04-06 | 1999-06-17 | Advanced Micro Devices, Inc., Sunnyvale, Calif. | 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 |
| US6002851A (en) * | 1997-01-28 | 1999-12-14 | Tandem Computers Incorporated | Method and apparatus for node pruning a multi-processor system for maximal, full connection during recovery |
| 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 | システム開発方法、記憶媒体、情報処理装置、情報端末装置、情報処理システム及び情報処理方法 |
-
1998
- 1998-06-30 US US09/106,882 patent/US6256753B1/en not_active Expired - Lifetime
- 1998-06-30 US US09/106,883 patent/US6327668B1/en not_active Expired - Lifetime
- 1998-06-30 US US09/107,973 patent/US6247143B1/en not_active Expired - Lifetime
-
1999
- 1999-06-22 EP EP99304904A patent/EP0969374A2/en not_active Withdrawn
- 1999-06-22 EP EP99304868A patent/EP0969372A3/en not_active Withdrawn
- 1999-06-22 EP EP99304896A patent/EP0969373A3/en not_active Withdrawn
- 1999-06-30 JP JP11186562A patent/JP2000040073A/ja active Pending
- 1999-06-30 JP JP11186088A patent/JP2000040038A/ja active Pending
- 1999-06-30 JP JP11186108A patent/JP2000040075A/ja active Pending
-
2001
- 2001-09-17 US US09/953,804 patent/US7155704B2/en not_active Expired - Lifetime
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008542878A (ja) * | 2005-05-24 | 2008-11-27 | マラソン テクノロジーズ コーポレイション | 対称型マルチプロセッサ・フォルトトレラントコンピュータシステム |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0969374A2 (en) | 2000-01-05 |
| US6327668B1 (en) | 2001-12-04 |
| US6256753B1 (en) | 2001-07-03 |
| EP0969372A3 (en) | 2004-05-26 |
| EP0969373A2 (en) | 2000-01-05 |
| US6247143B1 (en) | 2001-06-12 |
| JP2000040038A (ja) | 2000-02-08 |
| US7155704B2 (en) | 2006-12-26 |
| JP2000040075A (ja) | 2000-02-08 |
| EP0969372A2 (en) | 2000-01-05 |
| EP0969373A3 (en) | 2003-05-21 |
| US20020010880A1 (en) | 2002-01-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2000040073A (ja) | マルチプロセッサ・コンピュ―タ・システムのためのi/o処理 | |
| JP2000040076A (ja) | 多重コンピュ―タ・プロセスの制御 | |
| 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 | |
| US7669079B2 (en) | Method and device for switching over in a computer system having at least two execution units | |
| CN107451019B (zh) | 处理器核心中的自测试 | |
| JP2008518312A (ja) | マルチプロセッサシステムのデータおよび/または指令へのアクセスを遅延させる方法および装置 | |
| JP2006164277A (ja) | プロセッサにおけるエラー除去装置および方法,プロセッサ | |
| US8090983B2 (en) | Method and device for performing switchover operations in a computer system having at least two execution units | |
| US20070255875A1 (en) | Method and Device for Switching Over in a Computer System Having at Least Two Execution Units | |
| CN100538654C (zh) | 在具有多个组件的计算机系统中产生模式信号的方法和设备 | |
| 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 | |
| US7568138B2 (en) | Method to prevent firmware defects from disturbing logic clocks to improve system reliability | |
| US11635966B2 (en) | Pausing execution of a first machine code instruction with injection of a second machine code instruction in a processor | |
| US20080288758A1 (en) | Method and Device for Switching Over in a Computer System Having at Least Two Execution Units | |
| US12242849B1 (en) | Synchronization of asymmetric processors executing in quasi-dual processor lock step computing systems | |
| CN100585567C (zh) | 延迟访问多处理器系统的数据和/或指令的方法和设备 | |
| US20080313384A1 (en) | Method and Device for Separating the Processing of Program Code in a Computer System Having at Least Two Execution Units | |
| JP2008518300A (ja) | 少なくとも2つの実行ユニットを備えるコンピュータシステムにおけるプログラムコードの処理分割方法および装置 | |
| US12517781B1 (en) | Storage of delay-logic values for enhanced fault recovery for dual processor lock step computing systems | |
| Koser et al. | A chip-level redundant threading (CRT) scheme for shared-memory protection | |
| JP2011192024A (ja) | 入出力制御装置 |