JP2005038420A - 特殊cpu命令による対象を定めたフォールトトレランス - Google Patents
特殊cpu命令による対象を定めたフォールトトレランス Download PDFInfo
- Publication number
- JP2005038420A JP2005038420A JP2004192465A JP2004192465A JP2005038420A JP 2005038420 A JP2005038420 A JP 2005038420A JP 2004192465 A JP2004192465 A JP 2004192465A JP 2004192465 A JP2004192465 A JP 2004192465A JP 2005038420 A JP2005038420 A JP 2005038420A
- Authority
- JP
- Japan
- Prior art keywords
- fault tolerant
- instruction
- result
- processing unit
- version
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
- Retry When Errors Occur (AREA)
- Executing Machine-Instructions (AREA)
Abstract
【課題】 フォールトトレラントでかつ高可用性のコンピュータシステムを提供する。
【解決手段】 本発明にかかるマイクロプロセッサの復号回路は、命令のフォールトトレラントバージョンと命令の非フォールトトレラントバージョンとを互いから区別して復号化するように構成される。マイクロプロセッサの実行回路は、命令のフォールトトレラントバージョンを冗長性チェックをともなって実行し、命令の非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成される。
【選択図】図2B
【解決手段】 本発明にかかるマイクロプロセッサの復号回路は、命令のフォールトトレラントバージョンと命令の非フォールトトレラントバージョンとを互いから区別して復号化するように構成される。マイクロプロセッサの実行回路は、命令のフォールトトレラントバージョンを冗長性チェックをともなって実行し、命令の非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成される。
【選択図】図2B
Description
本発明は、包括的にはコンピュータシステムに関する。
詳細には、本発明は、フォールトトレラントでかつ高可用性のコンピュータシステムに関する。
詳細には、本発明は、フォールトトレラントでかつ高可用性のコンピュータシステムに関する。
デジタル処理においてフォールトトレランスを提供する先のソリューションは、ハードウェアベース、ソフトウェアベースまたはそれら両方の何らかの組合せのいずれかである。
フォールトトレランスを、ハードウェアにおいて、2つの完全な中央処理装置(CPU)をロックステップで実行するか、または3つのCPUを「投票(voting)」構成で実行することにより、提供することができる。
たとえば、システムは、同じ命令ストリームを実行する3つのCPUを、機能を複製する3つの別個の主記憶装置および別個の入出力装置とともに採用することができ、そのため、各タイプの要素のうちの1つに障害が発生した場合に、システムは動作し続ける。
不都合なことに、かかるシステムは、必要なCPUの数に関するだけでなく、CPUをサポートするインフラストラクチャ(メモリ、電源、冷却システム等)に関しても、著しいシステムオーバーヘッドを含む。
フォールトトレランスを、ハードウェアにおいて、2つの完全な中央処理装置(CPU)をロックステップで実行するか、または3つのCPUを「投票(voting)」構成で実行することにより、提供することができる。
たとえば、システムは、同じ命令ストリームを実行する3つのCPUを、機能を複製する3つの別個の主記憶装置および別個の入出力装置とともに採用することができ、そのため、各タイプの要素のうちの1つに障害が発生した場合に、システムは動作し続ける。
不都合なことに、かかるシステムは、必要なCPUの数に関するだけでなく、CPUをサポートするインフラストラクチャ(メモリ、電源、冷却システム等)に関しても、著しいシステムオーバーヘッドを含む。
ソフトウェアベースのソリューションは、通常、少なくとも3回、プログラムを完全に再実行することに頼る。
これにより、有効な実行時間が、プログラムを1回しか実行しない場合よりも3倍長くなる。
組合せ方式には、余分のハードウェア(たとえば、2倍のハードウェア)と余分の処理とがともに必要である。
余分の処理は、ソフトウェアチェックポインティングの形態をとる場合がある。
ソフトウェアチェックポインティングは、エラー時に特定の命令シーケンスを「やり直す」能力に関連する。
米国特許第5,317,726
米国特許第5,488,716
米国特許第5,845,060
米国特許第5,600,784
これにより、有効な実行時間が、プログラムを1回しか実行しない場合よりも3倍長くなる。
組合せ方式には、余分のハードウェア(たとえば、2倍のハードウェア)と余分の処理とがともに必要である。
余分の処理は、ソフトウェアチェックポインティングの形態をとる場合がある。
ソフトウェアチェックポインティングは、エラー時に特定の命令シーケンスを「やり直す」能力に関連する。
上述した従来のソリューションは、コストおよび/またはシステム性能に関して費用がかかる。
そのため、フォールトトレラントなデジタル処理を提供するためのシステムおよび方法の改善が非常に望ましい。
そのため、フォールトトレラントなデジタル処理を提供するためのシステムおよび方法の改善が非常に望ましい。
本発明の一実施形態は、対象を定めたフォールトトレラントコンピューティングのためのマイクロプロセッサに関する。
マイクロプロセッサの復号回路は、命令のフォールトトレラントバージョンと命令の非フォールトトレラントバージョンとを互いから区別して復号化するように構成される。
マイクロプロセッサの実行回路は、命令のフォールトトレラントバージョンを冗長性チェックをともなって実行し、命令の非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成される。
マイクロプロセッサの復号回路は、命令のフォールトトレラントバージョンと命令の非フォールトトレラントバージョンとを互いから区別して復号化するように構成される。
マイクロプロセッサの実行回路は、命令のフォールトトレラントバージョンを冗長性チェックをともなって実行し、命令の非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成される。
本発明の別の実施形態は、中央処理装置(CPU)における対象を定めたフォールトトレラントコンピューティングのための方法に関する。
本方法は、命令のフォールトトレラントバージョンを復号化することであって、それによって第1の演算コードを生成する、復号化すること、および命令の非フォールトトレラントバージョンを復号化することであって、それによって第2の演算コードを生成する、復号化することを含む。
第1の演算コードは冗長性チェックをともなって実行される。
第2の演算コードは冗長性チェックなしで実行される。
本方法は、命令のフォールトトレラントバージョンを復号化することであって、それによって第1の演算コードを生成する、復号化すること、および命令の非フォールトトレラントバージョンを復号化することであって、それによって第2の演算コードを生成する、復号化することを含む。
第1の演算コードは冗長性チェックをともなって実行される。
第2の演算コードは冗長性チェックなしで実行される。
本発明の別の実施形態は、コンピュータプログラム製品に関する。
本プログラム製品は、冗長性チェックをともなって実行される第1のタイプのコンピュータ読取可能命令と、非冗長的に実行される第2のタイプのコンピュータ読取可能命令と、を含む。
本プログラム製品は、冗長性チェックをともなって実行される第1のタイプのコンピュータ読取可能命令と、非冗長的に実行される第2のタイプのコンピュータ読取可能命令と、を含む。
上述したように、フォールトトレラントデジタル処理の従来のシステムおよび方法には、さまざまな不都合がある。
本発明は、改善されたフォールトトレラントコンピューティングのシステムおよび方法に関する。
本発明は、改善されたフォールトトレラントコンピューティングのシステムおよび方法に関する。
最新のマイクロプロセッサの慣用的な命令セットは、概して性能に対して最適化された命令から構成される。
本発明の実施形態によれば、フォールトトレラントの特徴を有する特殊命令を追加することにより、かかる慣用的な命令セットを補足する。
たとえば、算術または論理演算は、2つのタイプまたはバージョンを有してもよい。
非フォールトトレラントバージョンは、高速性能に対して構成される実行パスを使用し、一方フォールトトレラントバージョンは、結果の正当性を確実にするために冗長性チェックを有するパスを使用する。
対照的に、従来のCPUは、通常、算術および論理関数に対しかかる検査オプションを提供しない。
これは、これらの関数の検査が、通常低速かつ複雑であり、速度に関して性能を低減させるためである。
マイクロプロセッサにおける、キャッシュ、レジスタ、トランスレーション・ルックアサイド・バッファ(translation lookaside buffer(TLB))等の他の構造は、通常、パリティビットまたは誤り訂正符号化によって検査する。
本発明の実施形態によれば、フォールトトレラントの特徴を有する特殊命令を追加することにより、かかる慣用的な命令セットを補足する。
たとえば、算術または論理演算は、2つのタイプまたはバージョンを有してもよい。
非フォールトトレラントバージョンは、高速性能に対して構成される実行パスを使用し、一方フォールトトレラントバージョンは、結果の正当性を確実にするために冗長性チェックを有するパスを使用する。
対照的に、従来のCPUは、通常、算術および論理関数に対しかかる検査オプションを提供しない。
これは、これらの関数の検査が、通常低速かつ複雑であり、速度に関して性能を低減させるためである。
マイクロプロセッサにおける、キャッシュ、レジスタ、トランスレーション・ルックアサイド・バッファ(translation lookaside buffer(TLB))等の他の構造は、通常、パリティビットまたは誤り訂正符号化によって検査する。
本発明の実施形態は、いくつかのCPU命令の特殊バージョンを利用して、対象を定めてフォールトトレランスを提供する。
アプリケーション内の特定の動作を、フォールトトレランスに対する対象として定めてもよく、他の動作(または他のプログラム全体)を、冗長性チェックによるオーバーヘッドなしに実行してもよい。
アプリケーション内の特定の動作を、フォールトトレランスに対する対象として定めてもよく、他の動作(または他のプログラム全体)を、冗長性チェックによるオーバーヘッドなしに実行してもよい。
かかる対象を定めたフォールトトレランスは、従来のソリューションに対しさまざまな利点を有する。
それを、すべてのシステムプロセスに適用する代わりに、選択的にシステムプロセスに適用してもよい。
かかる資源の専用化を正当化するほど重要ではないか、または可能な限り高速で(冗長性チェックによって速度が低下することなく)実行することが望ましいプロセスがある。
たとえば、プリントスプーラプログラムは、フォールトトレランスを必要とするほど重要でない可能性がある。
本発明の実施形態によれば、対象を定めたフォールトトレランスにより、かかる重要ではないプログラムを特別な冗長性チェック命令なしに書くことができ、それによって重要でないプログラムは、貴重なシステム資源を不必要に拘束することがない。
一方、冗長性チェックを必要とする重要なプログラムまたはプロセスを、そのフォールトトレラント実行を提供するように特殊命令を使用して書くことができる。
その選択は、アプリケーションプログラマに任されてもよい。
それを、すべてのシステムプロセスに適用する代わりに、選択的にシステムプロセスに適用してもよい。
かかる資源の専用化を正当化するほど重要ではないか、または可能な限り高速で(冗長性チェックによって速度が低下することなく)実行することが望ましいプロセスがある。
たとえば、プリントスプーラプログラムは、フォールトトレランスを必要とするほど重要でない可能性がある。
本発明の実施形態によれば、対象を定めたフォールトトレランスにより、かかる重要ではないプログラムを特別な冗長性チェック命令なしに書くことができ、それによって重要でないプログラムは、貴重なシステム資源を不必要に拘束することがない。
一方、冗長性チェックを必要とする重要なプログラムまたはプロセスを、そのフォールトトレラント実行を提供するように特殊命令を使用して書くことができる。
その選択は、アプリケーションプログラマに任されてもよい。
図1は、本発明の一例としての実施形態による対象を定めたフォールトトレランスのためのCPU回路の概略図である。
CPU回路は、フェッチユニット102と、命令キャッシュ104と、命令デコーダユニット106と、レジスタロード/ストア回路108と、浮動小数点レジスタファイル110と、第1の浮動小数点ユニット(FPU#1)112と、第2の浮動小数点ユニット(FPU#2)114と、ハードウェア比較器および関連フラグ116と、を備える。
CPU回路は、フェッチユニット102と、命令キャッシュ104と、命令デコーダユニット106と、レジスタロード/ストア回路108と、浮動小数点レジスタファイル110と、第1の浮動小数点ユニット(FPU#1)112と、第2の浮動小数点ユニット(FPU#2)114と、ハードウェア比較器および関連フラグ116と、を備える。
当然ながら、CPUは、図示するもの以外の他のコンポーネントおよび接続を備える。
図示するコンポーネントは、図2Aおよび図2Bに関連して後に論考するフォールトトレラント動作例に関連するものを含む。
図示するコンポーネントは、図2Aおよび図2Bに関連して後に論考するフォールトトレラント動作例に関連するものを含む。
本発明の実施形態によれば、命令デコーダ回路106を、命令のフォールトトレラントバージョンと非フォールトトレラントバージョンとを互いから区別して復号化するように構成する。
フォールトトレラント命令を、第1の演算コード(opコード)によって表すことができ、一方同じ命令の非フォールトトレラントバージョンを、第2のopコードによって表すことができる。
CPU回路を、命令のフォールトトレラントバージョンを冗長性チェックをともなって実行し、命令の非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成する。
フォールトトレラント命令を、第1の演算コード(opコード)によって表すことができ、一方同じ命令の非フォールトトレラントバージョンを、第2のopコードによって表すことができる。
CPU回路を、命令のフォールトトレラントバージョンを冗長性チェックをともなって実行し、命令の非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成する。
一実施形態によれば、フラグ(116参照)は、第1の「有効」フラグと第2の「比較結果」フラグとを有してもよい。
有効フラグを使用して、格納された結果の妥当性を示すことができる。
比較結果フラグは、関連する比較器によって行われた比較の結果を示すことができる。
有効フラグを使用して、格納された結果の妥当性を示すことができる。
比較結果フラグは、関連する比較器によって行われた比較の結果を示すことができる。
図2Aは、本発明の実施形態による命令のフォールトトレラントバージョンを使用する命令シーケンス例を示す。
命令シーケンス例は、フォールトトレラント乗算命令(FT_MULT)を含む。
他の例には、フォールトトレラント加算命令(FT_ADD)、他のフォールトトレラント算術命令およびフォールトトレラント論理命令(FT_AND、FT_NAND、FT_OR、FT_XOR等)がある。
命令シーケンス例は、フォールトトレラント乗算命令(FT_MULT)を含む。
他の例には、フォールトトレラント加算命令(FT_ADD)、他のフォールトトレラント算術命令およびフォールトトレラント論理命令(FT_AND、FT_NAND、FT_OR、FT_XOR等)がある。
図2Aのシーケンスは、第1のレジスタR1にオペランドxをロードし、第2のレジスタR2にオペランドyをロードすることで開始する。
レジスタにオペランドをロードした後、乗算演算を実行する。
レジスタにオペランドをロードした後、乗算演算を実行する。
通常の非フォールトトレラント乗算(MULT)では、R1およびR2の内容は、第3のレジスタR3に格納される結果を生成する浮動小数点ユニットに直接送られる。
R3における結果を、MULT演算に対して有効であると仮定する。
R3における結果を、MULT演算に対して有効であると仮定する。
しかしながら、ここで、フォールトトレラント乗算(FT_MULT)を実行する。
FT_MULT演算は、MULT演算より低速でありより複雑である。
かかるフォールトトレラント演算を実行する一実施形態に含まれる特定のステップを、図2Bに関して以下のように説明する。
FT_MULT演算は、MULT演算より低速でありより複雑である。
かかるフォールトトレラント演算を実行する一実施形態に含まれる特定のステップを、図2Bに関して以下のように説明する。
図2Bは、本発明の実施形態によるフォールトトレラント命令の実行中にCPUにおいて実行されるプロセスのフローチャートである。
プロセスは、第1および第2のレジスタ(R1およびR2)の内容を第1の浮動小数点ユニット(FPU#1)と第2の浮動小数点ユニット(FPU#2)との両方に送出することによって開始する。
図2Bに示すように、これを、効率のために2つの並列ステップ(202−1および202−2)において行ってもよい。
たとえば、回路を、図1に示すように構成してもよく、R1およびR2の内容を、レジスタファイル110からFPU#1 112とFPU#2 114との両方に並列にロードする。
プロセスは、第1および第2のレジスタ(R1およびR2)の内容を第1の浮動小数点ユニット(FPU#1)と第2の浮動小数点ユニット(FPU#2)との両方に送出することによって開始する。
図2Bに示すように、これを、効率のために2つの並列ステップ(202−1および202−2)において行ってもよい。
たとえば、回路を、図1に示すように構成してもよく、R1およびR2の内容を、レジスタファイル110からFPU#1 112とFPU#2 114との両方に並列にロードする。
そして、FPU#1および#2の各々は、オペランドに対し指定された演算を実行する(それぞれ204−1および204−2)。
FT_MULTの場合、演算は2つのオペランドの乗算である。
乗算の結果を、各FPUによって比較器に送出する206−1および206−2。
比較器は、好ましくは、迅速に2つの結果を比較しそれらが一致するか一致しないかを判断する208ように設計されたハードウェア回路116からなる。
FT_MULTの場合、演算は2つのオペランドの乗算である。
乗算の結果を、各FPUによって比較器に送出する206−1および206−2。
比較器は、好ましくは、迅速に2つの結果を比較しそれらが一致するか一致しないかを判断する208ように設計されたハードウェア回路116からなる。
2つの結果が一致すると、有効な結果を第3のレジスタR3に格納する210。
結果を、比較器に関連する有効フラグを設定することにより、有効であると指示してもよい。(有効フラグのリセットは、無効な結果を示す。)
結果が一致したことが見出されることで、実行された演算の精度が確認される。
結果を、比較器に関連する有効フラグを設定することにより、有効であると指示してもよい。(有効フラグのリセットは、無効な結果を示す。)
結果が一致したことが見出されることで、実行された演算の精度が確認される。
一方、結果が一致しない場合、演算を繰り返すかまたはやり直す最大回数であるN回に達したか否かを判断する212。
カウンタ装置を使用して、繰返しの回数を追跡してもよい。
1つの特定の実施態様では、Nは3回であってもよい。
あるいは、Nは1回、2回、4回またはそれより多くであってもよい。
一実施形態では、数Nは、選択可能であり得るようにフォールトトレラント命令のパラメータであってもよい。
カウンタ装置を使用して、繰返しの回数を追跡してもよい。
1つの特定の実施態様では、Nは3回であってもよい。
あるいは、Nは1回、2回、4回またはそれより多くであってもよい。
一実施形態では、数Nは、選択可能であり得るようにフォールトトレラント命令のパラメータであってもよい。
繰返しの最大N回がすでに実行された場合、機械チェックを実行して214CPUの明らかに間違った演算をチェックおよび/または診断してもよい。
機械チェックの結果としてエラーメッセージを生成してもよい。
機械チェックの結果としてエラーメッセージを生成してもよい。
繰返しの最大N回に達していない場合、プロセスは戻り、FPUが演算を再実行し204、それらの結果を比較器に送出する206。
再び、結果が一致するか否かを判断する208。
この時一致する場合、R3に有効な結果を格納する210。
一致しない場合、再び最大繰返し回数に達したか否かを判断する212。
一致せずに最大回数に達した場合、機械チェックを実行してもよい214。
そうでない場合、プロセスは再び戻ってFPUの演算を繰り返す。
再び、結果が一致するか否かを判断する208。
この時一致する場合、R3に有効な結果を格納する210。
一致しない場合、再び最大繰返し回数に達したか否かを判断する212。
一致せずに最大回数に達した場合、機械チェックを実行してもよい214。
そうでない場合、プロセスは再び戻ってFPUの演算を繰り返す。
一実施形態では、比較エラーのログを保持する(すなわち、比較結果が一致しない場合)。
たとえば、演算の第1の反復で比較結果が一致しないが後の反復で一致する場合、機械チェックを実行しなかった場合であっても、比較エラー(複数可)のログを記録してもよい。
ロギングを、結果が一致しないと判断された208後に追加のステップとして実施してもよい。
たとえば、ロギングを、図2のブロック208と212との間の追加のステップとして実行してもよい。
たとえば、演算の第1の反復で比較結果が一致しないが後の反復で一致する場合、機械チェックを実行しなかった場合であっても、比較エラー(複数可)のログを記録してもよい。
ロギングを、結果が一致しないと判断された208後に追加のステップとして実施してもよい。
たとえば、ロギングを、図2のブロック208と212との間の追加のステップとして実行してもよい。
図3は、本発明の実施形態による対象を定めたフォールトトレランスの2つの異なるレベルを示す図である。
対象を定める第1のレベルは、プログラムレベルである。
本発明の実施形態により、プログラムを、何らかのフォールトトレラント(F−T)態様を有するかまたはフォールトトレラント態様を有していないように書くことができる。
フォールトトレラント態様を有するプログラムを、プログラムA302として示し、一方フォールトトレラント態様のないプログラムをプログラムB303として示す。
プログラムA302は、1つまたは複数の命令のフォールトトレラントバージョンを使用する少なくとも1つのルーチン304を含む。
一方、プログラムB303は、命令のいかなるフォールトトレラントバージョンも使用しないルーチン306のみを含む。
言い換えれば、本発明の実施形態により、プログラムを何らかのフォールトトレランスを含むか含まないものとしての対象に定めることができる。
いかなるフォールトトレランスもないプログラムは、最高速で実行するはずである。
本発明の実施形態により、プログラムを、何らかのフォールトトレラント(F−T)態様を有するかまたはフォールトトレラント態様を有していないように書くことができる。
フォールトトレラント態様を有するプログラムを、プログラムA302として示し、一方フォールトトレラント態様のないプログラムをプログラムB303として示す。
プログラムA302は、1つまたは複数の命令のフォールトトレラントバージョンを使用する少なくとも1つのルーチン304を含む。
一方、プログラムB303は、命令のいかなるフォールトトレラントバージョンも使用しないルーチン306のみを含む。
言い換えれば、本発明の実施形態により、プログラムを何らかのフォールトトレランスを含むか含まないものとしての対象に定めることができる。
いかなるフォールトトレランスもないプログラムは、最高速で実行するはずである。
対象を定める第2のレベルは、プログラム内におけるルーチンまたは命令のシーケンスごとか、または命令ごとである。
図3においてプログラムA302を考慮する。
プログラムA302は、フォールトトレラント命令を使用するように対象を定めてもよいいくつかのルーチン304と、フォールトトレラント命令を使用しない他のルーチン306と、を有する。
フォールトトレランスに対して対象が定められたルーチン304は、何らかの態様において他より重要であり得る。
たとえば、それらの計算を、正確であることが重要であるとみなしてもよく、そのためそれらの計算に対し、フォールトトレラント命令を使用して実行されるように対象を定めてもよい。
一方、フォールトトレラント命令を使用しないルーチン306は、計算精度に関してそれほど重要でなくてもよい。
図3においてプログラムA302を考慮する。
プログラムA302は、フォールトトレラント命令を使用するように対象を定めてもよいいくつかのルーチン304と、フォールトトレラント命令を使用しない他のルーチン306と、を有する。
フォールトトレランスに対して対象が定められたルーチン304は、何らかの態様において他より重要であり得る。
たとえば、それらの計算を、正確であることが重要であるとみなしてもよく、そのためそれらの計算に対し、フォールトトレラント命令を使用して実行されるように対象を定めてもよい。
一方、フォールトトレラント命令を使用しないルーチン306は、計算精度に関してそれほど重要でなくてもよい。
本発明の実施形態は、従来のフォールトトレラントコンピューティング技術に対してさまざまな利点を有する。
フォールトトレランスを提供するために必要なハードウェアおよび/またはソフトウェアオーバヘッドを低減することができる。
これを、プログラマーがプログラム内部の特定の命令に対して「正確さの保証(assurance of correctness)」により対象を定めることができるようにすることによって行う。
この方式は、複数のCPUと余分の関連するインフラストラクチャとを必要としないため、必要なハードウェアが低減する。
ハードウェア自体が、対象が定められているか否かに基づいて冗長性チェックを実行するため、ソフトウェア実行時間は比較的高速に維持される。
フォールトトレランスを提供するために必要なハードウェアおよび/またはソフトウェアオーバヘッドを低減することができる。
これを、プログラマーがプログラム内部の特定の命令に対して「正確さの保証(assurance of correctness)」により対象を定めることができるようにすることによって行う。
この方式は、複数のCPUと余分の関連するインフラストラクチャとを必要としないため、必要なハードウェアが低減する。
ハードウェア自体が、対象が定められているか否かに基づいて冗長性チェックを実行するため、ソフトウェア実行時間は比較的高速に維持される。
上記説明では、本発明の実施形態の完全な理解を提供するためにいくつかの特定の詳細を与えている。
しかしながら、発明の例示した実施形態の上記説明は、網羅的であるようにも、発明を開示した厳密な形態に限定するようにも、意図されていない。
当業者は、本発明を、特定の詳細のうちの1つまたは複数なしに、または他の方法、コンポーネント等とともに、実施することができる、ということを認めるであろう。
一方で、発明の態様を不明瞭にするのを回避するために、既知の構成または動作について詳細に示しも説明もしていない。
本明細書において、発明の特定の実施形態および発明に対する実施例を、例示の目的で説明しているが、当業者が認めるように、発明の範囲内でさまざまな等価の変更が可能である。
しかしながら、発明の例示した実施形態の上記説明は、網羅的であるようにも、発明を開示した厳密な形態に限定するようにも、意図されていない。
当業者は、本発明を、特定の詳細のうちの1つまたは複数なしに、または他の方法、コンポーネント等とともに、実施することができる、ということを認めるであろう。
一方で、発明の態様を不明瞭にするのを回避するために、既知の構成または動作について詳細に示しも説明もしていない。
本明細書において、発明の特定の実施形態および発明に対する実施例を、例示の目的で説明しているが、当業者が認めるように、発明の範囲内でさまざまな等価の変更が可能である。
上記詳細な説明に鑑みて、発明に対しこれらの変更を行うことができる。
特許請求の範囲で使用する用語を、発明を明細書および特許請求の範囲で開示する特定の実施形態に限定するように解釈するべきではない。
むしろ、発明の範囲は、特許請求項によって確定されるべきであり、それらを、特許請求の範囲の解釈の確立した原則に従って解釈すべきである。
特許請求の範囲で使用する用語を、発明を明細書および特許請求の範囲で開示する特定の実施形態に限定するように解釈するべきではない。
むしろ、発明の範囲は、特許請求項によって確定されるべきであり、それらを、特許請求の範囲の解釈の確立した原則に従って解釈すべきである。
102・・・フェッチユニット、
104・・・命令キャッシュ、
106・・・命令デコーダ、
108・・・レジスタロード/ストア、
110・・・レジスタファイル、
104・・・命令キャッシュ、
106・・・命令デコーダ、
108・・・レジスタロード/ストア、
110・・・レジスタファイル、
Claims (10)
- 対象を定めたフォールトトレラントコンピューティングのためのマイクロプロセッサであって、
命令のフォールトトレラントバージョンと該命令の非フォールトトレラントバージョンとを互いから区別して復号化するように構成された復号回路と、
前記命令の前記フォールトトレラントバージョンを冗長性チェックをともなって実行し、前記命令の前記非フォールトトレラントバージョンを冗長性チェックなしに実行するように構成された実行回路と
を具備するマイクロプロセッサ。 - 前記実行回路は、
オペランドデータを受け取り、前記命令に関する演算を実行し、第1の結果を生成するように構成された第1の処理ユニットと、
前記オペランドデータを受け取り、前記演算を実行し、第2の結果を生成するように構成された第2の処理ユニットと、
前記第1の結果と第2の結果とを比較するように構成された比較器と
を具備する
請求項1に記載のマイクロプロセッサ。 - 前記命令の前記フォールトトレラントバージョンに対し、前記比較が一致しない場合、前記処理ユニットによる前記実行と前記比較器による前記結果の比較とを、一致が発生するまで最大N回まで繰り返す
請求項2に記載のマイクロプロセッサ。 - 前記第1および第2の結果が決して一致しない場合、機械チェックを実行する
請求項3に記載のマイクロプロセッサ。 - 前記第1の処理ユニットと前記第2の処理ユニットとの両方に対し前記オペランドデータを提供するように構成されたレジスタファイル
をさらに具備する請求項2に記載のマイクロプロセッサ。 - 中央処理装置(CPU)における対象を定めたフォールトトレラントコンピューティングのための方法であって、
命令のフォールトトレラントバージョンに対応する第1の演算コードを復号化することと、
前記命令の非フォールトトレラントバージョンに対応する第2の演算コードを復号化することと、
前記第1の演算コードを冗長性チェックをともなって実行することと、
前記第2の演算コードを冗長性チェックなしで実行することと
を含む方法。 - 複数命令のセットを、該セットの各命令のフォールトトレラントバージョンと、非フォールトトレラントバージョンとがあるように提供する
請求項6に記載の方法。 - 前記命令のセットは、
算術演算
を含む
請求項7に記載の方法。 - 前記命令のセットは、
論理演算
を含む
請求項7に記載の方法。 - 前記第1の演算コードの実行は、
第1の処理ユニットにオペランドデータを提供することと、
第2の処理ユニットに前記オペランドデータを提供することと、
前記第1の処理ユニットにより前記オペランドデータに対して演算を実行することであって、第1の結果を生成することと、
前記第2の処理ユニットにより前記オペランドデータに前記演算を実行することであって、第2の結果を生成することと、
前記第1の結果と第2の結果とを比較することと
を含む
請求項6に記載の方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/623,099 US7146530B2 (en) | 2003-07-18 | 2003-07-18 | Targeted fault tolerance by special CPU instructions |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005038420A true JP2005038420A (ja) | 2005-02-10 |
Family
ID=34063303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004192465A Pending JP2005038420A (ja) | 2003-07-18 | 2004-06-30 | 特殊cpu命令による対象を定めたフォールトトレランス |
Country Status (3)
Country | Link |
---|---|
US (1) | US7146530B2 (ja) |
JP (1) | JP2005038420A (ja) |
DE (1) | DE102004011450A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925923B1 (en) | 2008-01-31 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine in response to failure of an instruction to execute |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625756B1 (en) * | 1997-12-19 | 2003-09-23 | Intel Corporation | Replay mechanism for soft error recovery |
US7213168B2 (en) * | 2003-09-16 | 2007-05-01 | Rockwell Automation Technologies, Inc. | Safety controller providing for execution of standard and safety control programs |
US7711898B2 (en) * | 2003-12-18 | 2010-05-04 | Intel Corporation | Register alias table cache to map a logical register to a physical register |
US8090996B2 (en) * | 2006-03-31 | 2012-01-03 | Intel Corporation | Detecting soft errors via selective re-execution |
US7444544B2 (en) * | 2006-07-14 | 2008-10-28 | International Business Machines Corporation | Write filter cache method and apparatus for protecting the microprocessor core from soft errors |
US7941698B1 (en) * | 2008-04-30 | 2011-05-10 | Hewlett-Packard Development Company, L.P. | Selective availability in processor systems |
US8082425B2 (en) * | 2009-04-29 | 2011-12-20 | Advanced Micro Devices, Inc. | Reliable execution using compare and transfer instruction on an SMT machine |
US20110099439A1 (en) * | 2009-10-23 | 2011-04-28 | Infineon Technologies Ag | Automatic diverse software generation for use in high integrity systems |
US20110208948A1 (en) * | 2010-02-23 | 2011-08-25 | Infineon Technologies Ag | Reading to and writing from peripherals with temporally separated redundant processor execution |
US10254360B2 (en) * | 2010-07-08 | 2019-04-09 | Koninklijke Philips N.V. | Router and coil array for ultra high field MRI |
US8516356B2 (en) | 2010-07-20 | 2013-08-20 | Infineon Technologies Ag | Real-time error detection by inverse processing |
US9015655B2 (en) | 2012-10-19 | 2015-04-21 | Northrop Grumman Systems Corporation | Generating a diverse program |
US9529654B2 (en) | 2013-11-27 | 2016-12-27 | Electronics And Telecommunications Research Institute | Recoverable and fault-tolerant CPU core and control method thereof |
KR102175403B1 (ko) | 2014-07-21 | 2020-11-06 | 한국전자통신연구원 | 디지털 연산 회로의 기능 복구 장치 및 방법 |
KR101658828B1 (ko) | 2015-03-23 | 2016-09-22 | 한국전자통신연구원 | 씨피유 코어의 기능복구를 위한 장치 및 방법 |
KR102162321B1 (ko) | 2016-03-14 | 2020-10-06 | 한국전자통신연구원 | 프로세서 시스템 및 그것의 고장 검출 방법 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2003338A1 (en) | 1987-11-09 | 1990-06-09 | Richard W. Cutts, Jr. | Synchronization of fault-tolerant computer system having multiple processors |
US5148432A (en) * | 1988-11-14 | 1992-09-15 | Array Technology Corporation | Arrayed disk drive system and method |
US5138708A (en) * | 1989-08-03 | 1992-08-11 | Unisys Corporation | Digital processor using current state comparison for providing fault tolerance |
WO1993009494A1 (en) * | 1991-10-28 | 1993-05-13 | Digital Equipment Corporation | Fault-tolerant computer processing using a shadow virtual processor |
JPH0773059A (ja) * | 1993-03-02 | 1995-03-17 | Tandem Comput Inc | フォールトトレラント型コンピュータシステム |
DE69435090T2 (de) | 1993-12-01 | 2009-06-10 | Marathon Technologies Corp., Stow | Rechnersystem mit Steuereinheiten und Rechnerelementen |
JP3971565B2 (ja) * | 2000-11-06 | 2007-09-05 | 富士通株式会社 | 半導体装置及び半導体装置初期設定方法 |
-
2003
- 2003-07-18 US US10/623,099 patent/US7146530B2/en not_active Expired - Fee Related
-
2004
- 2004-03-09 DE DE102004011450A patent/DE102004011450A1/de not_active Withdrawn
- 2004-06-30 JP JP2004192465A patent/JP2005038420A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925923B1 (en) | 2008-01-31 | 2011-04-12 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine in response to failure of an instruction to execute |
Also Published As
Publication number | Publication date |
---|---|
US7146530B2 (en) | 2006-12-05 |
DE102004011450A1 (de) | 2005-02-17 |
US20050015659A1 (en) | 2005-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI681333B (zh) | 可靠度提升系統、方法和電腦可讀取媒體 | |
CN111164578B (zh) | 核内锁步模式的错误恢复 | |
CN106575218B (zh) | 持久性存储屏障处理器、方法、***和指令 | |
KR101546033B1 (ko) | Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행 | |
US7865770B2 (en) | Processor including efficient signature generation for logic error protection | |
JP2005038420A (ja) | 特殊cpu命令による対象を定めたフォールトトレランス | |
JP4691105B2 (ja) | 冗長マルチスレッド環境でのチェッカ命令の実行 | |
CN108292252B (zh) | 用于容错和检错的***、方法和装置 | |
US20090183035A1 (en) | Processor including hybrid redundancy for logic error protection | |
CN109416672B (zh) | 不对有缺陷数据采取异常的从存储器读取指令、处理器、方法和*** | |
US9110768B2 (en) | Residue based error detection for integer and floating point execution units | |
JP2007109224A (ja) | 高可用性モードを有するハードウェア設定可能cpu | |
JP2005166057A (ja) | 障害検出コンピュータシステム | |
US9594648B2 (en) | Controlling non-redundant execution in a redundant multithreading (RMT) processor | |
US20190102242A1 (en) | System and methods for hardware-software cooperative pipeline error detection | |
US20050108509A1 (en) | Error detection method and system for processors that employs lockstepped concurrent threads | |
Sullivan et al. | Swapcodes: Error codes for hardware-software cooperative gpu pipeline error detection | |
Osinski et al. | A survey of fault tolerance approaches on different architecture levels | |
US20160065243A1 (en) | Radiation hardening architectural extensions for a radiation hardened by design microprocessor | |
US9063855B2 (en) | Fault handling at a transaction level by employing a token and a source-to-destination paradigm in a processor-based system | |
CN117112318A (zh) | 基于risc-v架构的双核容错*** | |
Chen et al. | Software fault tolerance for FPUs via vectorization | |
Raghunandana et al. | TREFU: An Online Error Detecting and Correcting Fault Tolerant GPGPU Architecture | |
US8793689B2 (en) | Redundant multithreading processor | |
Rouf et al. | Low-cost control flow protection via available redundancies in the microprocessor pipeline |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061219 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070604 |