JP5315748B2 - マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法 - Google Patents

マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法 Download PDF

Info

Publication number
JP5315748B2
JP5315748B2 JP2008085272A JP2008085272A JP5315748B2 JP 5315748 B2 JP5315748 B2 JP 5315748B2 JP 2008085272 A JP2008085272 A JP 2008085272A JP 2008085272 A JP2008085272 A JP 2008085272A JP 5315748 B2 JP5315748 B2 JP 5315748B2
Authority
JP
Japan
Prior art keywords
signature
instruction
execution
processor
executed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008085272A
Other languages
English (en)
Other versions
JP2009238056A (ja
Inventor
充 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008085272A priority Critical patent/JP5315748B2/ja
Priority to US12/390,894 priority patent/US20090249034A1/en
Publication of JP2009238056A publication Critical patent/JP2009238056A/ja
Application granted granted Critical
Publication of JP5315748B2 publication Critical patent/JP5315748B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1637Error detection by comparing the output of redundant processing systems using additional compare functionality in one or some but not all of the redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/181Eliminating the failing redundant component
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Description

本発明は、高信頼の求められるコンピュータシステムで採用されている多重実行検証を容易にする技術に関する。
近年、コンピュータシステムは社会に広く普及し、社会的インフラとしてなくてはならないものとなってきている。それに伴い、コンピュータシステムの信頼性は重要性を増してきている。一方で従来より続いてきた、コンピュータシステムに対する性能向上の要求も強く、コンピュータシステムは性能向上と信頼性の両者を兼ね備えたシステムであることが求められている。
コンピュータシステムを構成するLSI(Large Scale Integration)は、年々微細化・低電圧化を進めることにより動作周波数を向上させ、性能向上の要求に応えている。しかしその一方で、微細化、低電圧化は外乱に対する影響を受けやすくなり、個々のLSI単体でみた場合の信頼性は低下する傾向にある。たとえば宇宙放射線によりLSI内部で保持しているデータが反転してしまうソフトエラーと呼ばれる現象は、LSIが高集積化されるに従って頻度が向上することが知られており、現在でも重要な問題となってきている。
そのため個々のLSIの信頼性低下を補うべく、信頼性が要求されるシステムでは、信頼性向上のための構造的な工夫が用いられている。たとえば先に挙げたソフトエラーの例では、メモリの内容が1ビット反転しても元に戻すことができるためのエラー訂正コードが多くの計算機で用いられている。
エラー訂正コードはメモリに限定された信頼性向上のための工夫であるが、計算機の実行結果そのものの信頼性を向上させるための工夫として広く用いられている手法が多重実行方式である。
多重実行方式は同じプログラムを複数回実行し、実行結果が一致するかどうかを検証し、複数で一致した結果を採用することによって結果の正当性を保証する方式である(図11参照)。入力として同じデータを与えれば、計算途中で故障等の問題が発生しない限り、計算結果は同じものとなるはずである。したがって、複数の計算結果の一致を確認することにより、計算途中で故障等の問題が発生しているという確率を低下させることができる。
複数の実行結果を比較して違いが発見された場合、三つ以上の実行結果があれば、多数決を用いて適切と思われる結果を選択することができる。二つの場合は、実行を再度やり直したり、ユーザに対して警告を出すなどの手法が用いられる。さらに、特許文献1では、複数の計算ユニットで同時に実行を行っている場合に、他の実行結果と異なる結果を出力した実行ユニットには故障が発生しているものとみなしてシステムから切り離すなどの高度な処理が可能な構成を開示している。
このようにコンピュータシステムにおいて信頼性を向上するために、多重実行方式が用いられてきたが、多重実行方式では、実行の一致検証をどのように行うか、ということが非常に重要なポイントとなる。
多重実行方式では「プログラムの実行」→「結果の一致検証」という手続きを経て、初めてプログラムの実行が信頼に足るものであるとして確定される。そのため、結果の一致検証に時間がかかれば、その分だけプログラムの実行が確定するまで時間がかかることになり、コンピュータシステムの性能低下を招く。そのため、実行の一致検証は高速に行われる必要がある。
そこで重要となるのが検証に用いる「実行結果」の選択と検証の手段である。実行結果として何を用いるかという問題は、どういうレベルで多重化するのかという問題に等しい。
一方、検証の手段とは、どのような比較方法を用いるかということである。
これまでに、多重実行方式として「シグネチャ・チェック」が提案されてきた。
シグネチャとは、ひと固まりの情報から特徴的な部分を抜き出して生成されるコードのことである。マイクロプロセッサから出力される実行結果は膨大な量になるため、そのままでは実行結果を完全に比較することは困難である。そこで、出力データからシグネチャを生成し、シグネチャのみの比較によって出力データ全体の比較の代わりをさせるというのが「シグネチャ・チェック」方式である。
シグネチャの生成方法には様々な方法がある。たとえば、チェックサムをとる、CRC(Cycric Redundancy Check)を取る、LFSR(Linear
Feedback Shift Register)を取るなどの手法によってシグネチャを生成することができる。
「シグネチャ・チェック」方式は、出力結果を完全に比較する方法に比べて検出能力が劣る。しかしその分、一致検査にかかる時間は非常に短くて済む。故障の発生頻度が非常に低いことを考慮し、シグネチャの生成方法として適切な方法を用いれば、十分高い精度で出力結果の一致を検査することが可能である。また、「シグネチャ・チェック」方式では、シグネチャをどのように生成するかが問題となるが、ソフトウェアによってシグネチャを生成する方法は、シグネチャの生成に出力結果の一致検査よりも多くの時間がかかってしまうため、シグネチャ・チェックの利点が失われてしまう。従来の「シグネチャ・チェック」方式による多重化高信頼システムには次のような問題がある。
特許文献2では、マイクロプロセッサの内部状態からシグネチャを生成し、シグネチャを利用した多重化高信頼システムを構築している。
特許文献2の開示のシステムでは、シグネチャの生成はマイクロプロセッサの状態、たとえばパイプラインの状態や実行中の命令、実行によって出力されたデータなどから行われる。しかし現在のマイクロプロセッサは内部構造が複雑になっており、実行結果が同じでもマイクロプロセッサの内部状態が異なる場合が少なくない。たとえば、現在の高速なマイクロプロセッサで用いられているout−of−order実行では、命令の順序はマイクロプロセッサがある程度自由に変更することができる。したがって、同じプログラムを実行してもプロセッサ内部では他のプロセッサと違う順序で命令を実行している可能性がある。また、近年のマイクロプロセッサはキャッシュを大量に内蔵しているが、キャッシュの量によっても動作は変わってくる。特にキャッシュの一部が物理的に故障した場合、その部分のみを切り離して実行を継続する機能が備わっているマイクロプロセッサでは、キャッシュサイズが同一のプロセッサ同士であっても内部的には異なる動きをする可能性がある。したがって、マイクロプロセッサの内部状態を用いたシグネチャ生成方法は、現代のマイクロプロセッサから構成されるコンピュータシステムに応用することができない。
特許文献3でも同様に、シグネチャを用いたマイクロプロセッサに関する技術が開示さ
れている。特許文献3の開示のシステムでは、シグネチャはレジスタ・ファイルの書き込みから生成される。レジスタ・ファイルの書き込みは、シグネチャ生成器に送られると同時に、スタック状に構成されたレジスタに保存される。ある一定期間が経過すると、二つあるいはそれ以上のプロセッサのシグネチャ同士が比較され、一致していればスタック状のレジスタが一段進み、レジスタ・ファイルへの書き込みが実際に反映されるという方式を取る。これによって、高信頼システムを構築している。
特許文献3の開示のシステムは、スタック状になったレジスタ・ファイルを用いる。これによってレジスタ・ファイルへの書き込み反映がシグネチャの一致検査の後に行われることを保証し、高信頼実行を可能としている。しかし一方で、スタック状のレジスタ・ファイルは大量のメモリを必要とし、さらにシグネチャの一致検査回路、不一致の際のやり直し回路など、マイクロプロセッサに様々な付加回路を必要とする。そのため、現状のマイクロプロセッサに対して大幅な変更が必要となり、大きなコストがかかる。
また特許文献3では、out−of−orderプロセッサへの応用も言及されているが、実行順序が入れ替わった命令列から累積的に生成されるシグネチャを一致させる必要があることから、シグネチャの生成方法として順序に依存しない方式(たとえばチェックサムなど)を用いなければならない。これは、他の、順序に依存する方式(たとえばCRCやLFSRなど)と比べて検出能力の低い方式であり、故障検出の能力が低下するという問題がある。
特開平11−085713号公報 特開平06−83663号公報 特開2002−312190号公報
以上のことから、本発明の課題は、シグネチャ・チェックを用いた多重化実行方式による多重化高信頼システムにおいて、従来システムの問題を解決することにある。
すなわち、現在の高速なマイクロプロセッサであるout−of−orderプロセッサを用いた多重化システムにおけるシグネチャ生成を、容易かつ比較的安価に実現できる方法を提供することにある。
更に、提案するシグネチャ方法により生成されたシグネチャを用いて信頼性を検証することにより高性能かつ高信頼な多重化システムを提供する。
このシグネチャ生成方法の特徴は、命令が実行され、実行終了した命令の結果がプログラム順に並べ直されて命令実行が確定された、ということを示す完了命令情報を用いてシグネチャを生成するところにある。具体的には、out−of−orderプロセッサの内部にハードウェア的にシグネチャ生成回路を設け、該シグネチャ生成回路が、out−of−orderプロセッサのリタイアユニットから得られる完了命令情報を受信し、該完了命令情報に基づいてシグネチャを生成する。
このように、シグネチャは命令実行が確定したことに基づいて生成されるため、特に命令の実行順序がプログラム順序によらないout−of−order実行を行うマイクロプロセッサにおいても正確にシグネチャを生成することができる。また、シグネチャを生成するためのハードウェアは比較的簡易な回路で実現可能で、ハードウェアコストも低減できる。
また、上記構成を備えるマイクロプロセッサによって構成される多重化システムにおい
て、一定量の処理に対応して生成されるシグネチャを収集し、比較し、一致検証を行うことを特徴とする。
これにより、out−of−order実行を行うマイクロプロセッサを用いた高性能多重化システムの信頼性を高めることが可能である。
本シグネチャ生成方法によれば、シグネチャは命令実行が確定したことに基づいて生成されるため、特に命令の実行順序がプログラム順序によらないout−of−order実行を行うマイクロプロセッサにおいても正確にシグネチャを生成することができる。また、シグネチャを生成するためのハードウェアは比較的簡易な回路で実現可能で、ハードウェアコストも低減できる。
また、out−of−order実行を行うマイクロプロセッサで構成される多重化システムにおいて信頼性を検証することが可能となり、高性能かつ高信頼な多重化システムを提供することが可能となる。
以下、図面を参照して、本発明の実施の形態について説明する。
図1に実施例の多重化システムの全体構成を示す。これから実施例1および実施例2について説明するが、図1はいずれの実施例にも共通な構成である。また、本実施例では多重化システムの構成として複数のプロセッサが並列に動作するシステム構成を説明するが、多重化システムはこれに限定されるものではなく、一つのプロセッサで同じ処理をn回繰り返す、という多重化システムの構成であってもかまわない。
さて、図1の多重化システム10は、複数のプロセッサ0(11−0)〜プロセッサN(11−N)を含む。各プロセッサ11には、プログラムやユーザデータなどがデータ記憶部12から入力され、命令実行などの処理が行われる。また各プロセッサ11ではシグネチャが生成される。そして、各プロセッサにおいて同じ量の処理が終了した時点、たとえば各プロセッサで一定の命令数の実行が終了した時点で、複数のプロセッサのうち例えばプロセッサ0(11−0)が、他のプロセッサ1(11−1)〜プロセッサN(11−N)のシグネチャを、通信路13を介して収集し、一致検証を行う。一致検証において、一致しないシグネチャがある場合には例えば一致しないシグネチャを生成したプロセッサの動作を停止させたり、ユーザに警告するなどのエラー処理を行う。
図2に、図1に示した実施例におけるプロセッサの詳細な構成を示す。これは、out−of−orderプロセッサの一般的な構成である。
プログラムはL2キャッシュ28、L1命令キャッシュ26を経由して、フェッチ&デコードユニット25に取り込まれ、解析される。解析した結果はスケジュール&命令発行ユニット22に送られ、そこでプログラム実行順序によらないスケジューリングがおこなわれ、適切な実行ユニット24で実行される。
リタイアユニット21に備えられるリオーダーバッファ29では、スケジュール&命令発行ユニット22でばらばらになる前のプログラム順序を記憶しておく。実行ユニット24での実行が完了すると、命令完了情報はリタイアユニット21に送られる。リタイアユニット21では、リオーダーバッファ29の情報を元に、終了した結果を元のプログラム順序に並べ直し、実行を確定していく。
したがって、マイクロプロセッサ内部でどのような順序で命令を実行しようとも、実行結果はリタイアユニット21によってリオーダーバッファ29に並べられたプログラム順
に確定される。逆に言えば、リタイアユニット21から情報をもらえば、内部の命令実行順序によらず、プログラム順序で実行終了情報が得られることになる。
そこで、本実施例1では、図3に示すようにout−of−order実行のマイクロプロセッサ内部でリタイアユニット21から、プログラム順序の実行終了情報である完了命令情報(通常はRetire命令情報と呼ばれる)をもらい、該完了命令情報に基づいてシグネチャを生成する回路等をマイクロプロセッサ11に追加する。
図3において、シグネチャ生成回路31は、チェックサム、CRC、LFSRなどのコーディング手段によってシグネチャを生成する。生成されたシグネチャは、シグネチャ・レジスタ33に保存され、次のシグネチャ生成あるいはプログラムからの読み出しに提供される。
シグネチャ有効/無効制御ビット32はプログラムからセットされる1ビットから成る制御ビットである。このビットが有効状態のときのみシグネチャ・レジスタ33の値は更新され、無効の場合は命令実行が完了しようともシグネチャ・レジスタ33の値は更新されない。
シグネチャ生成回路31は、リタイアユニット21から、命令実行が確定した命令に関する情報である、完了命令情報を受け取る。完了命令情報の中身としては例えば次のようなものが挙げられる。
・命令種別
・使用するレジスタ番号(読み出し、書き込み)
・レジスタへの書き込みデータ
・メモリへの読み出し、書き込みのアドレスおよびデータ
・インストラクション・ポインタ(IP:Instruction Pointer)
図3に示したシグネチャ・レジスタ33を備えるプロセッサによって構成される多重化システムは、図4のように処理が行われる。尚、図4に示した処理は実行ユニット24によってソフトウェア的に実行されるものである。
まず、図4において、S41〜S45までの処理は図1に示した多重化システムの各プロセッサでそれぞれ実行される処理である。
S41で、シグネチャ・レジスタ33をクリアする。そして、S42で、シグネチャ有効/無効制御ビット32を「有効」にセットする。S43で命令実行され、これに伴いシグネチャ生成回路31にてシグネチャが生成され、シグネチャ・レジスタ33に保存される。
各プロセッサで実行されるプログラムは「同じ量の処理が終了した時点」で割り込みを発生し、タスクスイッチを起こす。タスクスイッチが発生すると、S44でシグネチャ有効/無効ビット32が「無効」となり、S45でシグネチャ・レジスタ33を読み出す。
読み出されたシグネチャ・レジスタ33の値は、図1に示した通信路13を介して、いずれかのプロセッサ11の実行ユニット24に回収される(S46)。
そして、S47で回収されたシグネチャ・レジスタ33の値を比較して、すべて一致する場合には各プロセッサで処理された命令実行が信頼できるものとして次の処理へ進む。いずれかのシグネチャが不一致の場合には、S48でエラー処理を行う。このエラー処理では、たとえば、不一致の値を出力したプロセッサの動作を停止させたり、ユーザに警告を発するなどの処理を行う。
このように多重化システムの検証処理は、「同じ量の処理が終了した時点」で割りこみが発生して、複数のシグネチャ・レジスタ33の値を比較処理することで実現されるが、この「同じ量の処理が終了した時点」について説明しておく。
図1に示したようなシステムで複数のプロセッサで別々に動作する場合でも、クロックが高速化し、プロセッサが複雑になり内部の動作の同一性が保てないため、完全に同じタイミングで各プロセッサの処理をとめることはできない。また、図1のように別々のプロセッサで同じ処理を並列に行うのではなく、一つのプロセッサで同じ処理をn回繰り返して、それらの結果を比較するという多重化システムも考えられるため、時間的タイミング以外の何らかの「一定量」の基準が必要となる。
この「一定量」の基準として、まずアプリケーション側で処理を区切る方法が考えられる。しかしこれはアプリケーションの改変が必要となるため、別の方法として、一定数の命令実行を基準とする方法がある。現代のプロセッサには、指定した命令数を実行すると割り込みを上げることができるものがあるため、本実施例ではこの機能を使って、一定命令数(たとえば10,000命令など)を実行した時点で割りこみをあげ、その時点の各シグネチャ・レジスタの値を比較する。つまり図4のS43でプロセッサが一定の命令数を実行すると割り込みが発生し、S44、S45の処理が各プロセッサで行われて、複数あるプロセッサのうち一つのプロセッサにシステム内のシグネチャ・レジスタ33の値が回収され(S46)、シグネチャ・レジスタ33の値が比較されて、システムの検証が行われる。
以上のように、実施例1の構成について説明したが、実施例1において、シグネチャ生成回路31がシグネチャを生成する際に用いる、リタイアユニット21から受け取る完了命令情報のより詳しい中身によって、実施例1を実施例1(A)と実施例1(B)に区別して以下説明する。
まず、実施例1(A)の完了命令情報は、インストラクション・ポインタ(IP)と、命令の種類と、使用するレジスタ番号と、レジスタへの書き込みデータと、使用するメモリ・アドレスと、メモリへの書き込みデータとから成る。
実施例1(A)のリタイアユニット21の構成を図5に示す。
リタイアユニット21は、命令順序保存ユニット51、完了処理ユニット52、リオーダーバッファ53を備える。命令順序保存ユニット51には、スケジュール&命令発行ユニット22からプログラム命令に関わる情報が送られてくる。そして、命令順序保存ユニット51からプログラム命令に関わる情報として、IP、命令の種類、レジスタ番号/メモリ・アドレスがリオーダーバッファ53に保存される。
完了処理ユニット52には、実行ユニット24から実行が終了した命令についての情報が送られてくる。そして、完了処理ユニット52は、実行ユニット21から送られた実行が終了した命令についての情報に基づいて該当するリオーダーバッファ53を選択し読み出し、完了命令情報としてシグネチャ生成回路31に出力する。上述したように完了命令情報は、インストラクション・ポインタ(IP)と、命令の種類と、使用するレジスタ番号と、レジスタへの書き込みデータと、使用するメモリ・アドレスと、メモリへの書き込みデータとから成る。そして、シグネチャ生成回路31では、完了命令情報に基づいてシグネチャを生成する。
このように実施例1(A)の完了命令情報は、リオーダーバッファ53に保存される情報をそのまま完了命令情報として用いるものであるが、完了命令情報の中にはプログラム実行に影響を与えない内部状態を示す情報がある。そこで、実施例1(B)では、マイク
ロプロセッサの内部状態がどのようなものであっても外部への出力であるメモリ書き込みのみが一致していれば動作は一致しているとみなし、シグネチャ生成回路への入力としてメモリへのメモリ書き込み情報のみを用いる構成とする。
実施例1(B)のリタイアユニット21の構成を図6に示す。
実施例1(A)と同様に、リタイアユニット21は、命令順序保存ユニット51、完了処理ユニット52、リオーダーバッファ53を備える。命令順序保存ユニット51には、スケジュール&命令発行ユニット22からプログラム命令に関わる情報が送られてくる。そして、命令順序保存ユニット51からプログラム命令に関わる情報として、IP、命令の種類、レジスタ番号/メモリ・アドレスがリオーダーバッファ53に保存される。
完了処理ユニット52には、実行ユニット24から実行が終了した命令についての情報が送られてくる。そして、完了処理ユニット52は、実行ユニット21から送られた実行が終了した命令についての情報に基づいて該当するリオーダーバッファ53を完了命令情報として読み出す。
実施例1(B)では、読み出された完了命令情報は、メモリ書き込み命令抽出ユニット61に入力される。そして、メモリ書き込み命令抽出ユニット61によりメモリに書き込みを行う命令についてだけ抽出され、更に、書き込みを行うメモリ・アドレスと、メモリへの書き込みデータとからなる情報を完了命令情報としてシグネチャ生成回路31に出力する。シグネチャ生成回路31では、出力された完了命令情報に基づいてシグネチャを生成する。
実施例1(B)のように、シグネチャ生成回路31への入力を限定することによって、シグネチャ生成回路の構成を簡単にすることが可能であり、また、プログラム実行に影響を与えない内部状態の不一致をシステムの故障と検出することを防ぐことが可能となる。
以上のように、実施例1について詳細に説明した。
ところで、実施例1を仮想マシンやプロセス単位で多重実行する多重化高信頼システムに適用する場合、図4に示したS43の命令実行処理において、図7に示すような処理が行われる。
まず、S71で、仮想マシンまたはプロセスの切り替えイベントが発生すると、次に、S72で、シグネチャ有効/無効制御ビット32を「無効」にする。そして、S73で現在のシグネチャ・レジスタ33の値をメモリ等に保存する。
S74で、切り替え先の仮想マシンまたはプロセスに対応するシグネチャ・レジスタ33の値をメモリ等から読み出す。S75で、シグネチャ・レジスタ33に読み出した値を設定する。S76で、シグネチャ有効/無効制御ビットを「有効」にする。そして、S77で次の仮想マシンまたはプロセスの処理が実行される。
このように、仮想マシンまたはプロセスの実行が切り替わるたびに、シグネチャ・レジスタの内容を退避し、次に実行される仮想マシンに対応するシグネチャ・レジスタの値をメモリ等から読み出して設定し直す処理が必要となる。このような処理が仮想マシンまたはプロセスの切り替え毎に発生することによりシステム全体の処理の高速化が妨げられてしまう恐れがある。このような問題を解決する方法として、次に実施例2の構成を示す。
図8に、実施例2のプロセッサの構成を示す。実施例1の図3と同様に、out−of−order実行のマイクロプロセッサ内部でリタイアユニット21から、プログラム順序の実行終了情報である完了命令情報をもらい、完了命令情報に基づき、シグネチャを生
成する回路等を図2のマイクロプロセッサ11に追加する。また、シグネチャ生成回路81、シグネチャ有効/無効制御ビット82を備えることは実施例1と同様である。
実施例2は、シグネチャ・レジスタ83を複数本用意するところに特徴がある。それぞれのシグネチャ・レジスタ(83−0〜83−n)がシグネチャ生成回路81で生成されたシグネチャを保持することができ、プログラムから読み書きできるものとする。
また、新たにシグネチャ・レジスタ83を選択する選択回路84を設け、複数本あるシグネチャ・レジスタ83のうちどれを使うかを選択できるようにする。選択のキーとなるデータはリタイアユニット21から得られる実行が確定した命令の属する仮想マシンIDあるいはプロセスIDを用いる。
図9に、実施例2のリタイアユニット21の構成を示す。
実施例1と同様に、リタイアユニット21は、命令順序保存ユニット91、完了処理ユニット92、リオーダーバッファ93を備える。
実施例1との違いは、実行ユニット24から完了処理ユニット92に対し、実行が終了した命令についての情報と、その命令を実行した仮想マシンのIDが送られてくる点である。そして、リオーダーバッファ93に仮想マシンIDを格納する領域があり、仮想マシンIDも保存される。
完了命令情報の読み出しは、実行ユニット24から送られてくる実行が終了した命令についての情報に基づいてリオーダーバッファ93から選択されて出力されるが、その際に仮想マシンIDがシグネチャ生成回路81へ出力される。そしてシグネチャ生成回路81に出力される仮想マシンIDを選択キーとして、複数本あるシグネチャ・レジスタ0〜n(83−0〜83−n)のうちどれを使うかを選択する。
尚、複数プロセスで実行する場合は、仮想マシンIDの代わりにプロセスIDが実行ユニット24から送られてくることになるが、以下仮想マシンの場合を例に説明をすることにする。
例えば、複数の仮想マシンを時分割で切り替えて実行している場合を考える。この場合、ある仮想マシンの命令実行は割り込み等によって中断され、他の仮想マシンの命令実行へと切り替えられる可能性がある。今仮に、仮想マシンAと仮想マシンBが時分割で並行に動作しており、仮想マシンAの命令実行に対応するシグネチャは、シグネチャ・レジスタ0(83−0)に格納され、仮想マシンBの命令実行に対応するシグネチャは、シグネチャ・レジスタ1(83−1)に格納されるものとする。更に、仮想マシンIDは、レジスタ・ファイル23内の仮想マシンIDレジスタに保存されており、実行ユニット24によって実行された命令は、この仮想マシンIDレジスタと一緒にリタイアユニット21に送られ、リタイアユニット21内のリオーダーバッファ93に格納される。なお、仮想マシンIDは、仮想マシンAを実行しているか、仮想マシンBを実行しているかを表すIDで、仮想マシンAに対応するIDは0、仮想マシンBに対応するIDは1とする。
仮想マシンAの命令実行が開始されると、実行ユニット24によって実行された命令は、仮想マシンIDレジスタの値0とともにリタイアユニット21に送られ、リオーダーバッファ93に格納され、命令の完了を待つ。この命令がリタイアユニット21で完了すると、リタイアユニット21は、シグネチャ生成回路81に対して、完了命令情報とともに仮想マシンAに対応するIDである0という値も同時に送る。シグネチャ・レジスタに付随する選択回路84では、この0という値を元にシグネチャ・レジスタを選択するので、シグネチャ・レジスタ0(83−0)が選択される。その結果、選択されたシグネチャ・レジスタ0(83−0)に保存されていたシグネチャ・レジスタの値と、リタイアユニット21から送られてきた完了命令情報を元に新たなシグネチャが生成され、シグネチャ・レジスタ0(83−0)に保存される。
今、割り込みによって実行される仮想マシンがAからBへ切り替わると、レジスタ・ファイル内の仮想マシンIDレジスタの値も、仮想マシンAを表すIDである0から、仮想マシンBを表すIDである1へと書き換えられる。この状態で命令が実行ユニット24によって実行されると、実行された命令情報は仮想マシンBを表すIDである1とともに、リタイアユニット21へ送られる。リタイアユニット21でこの命令が完了すると、その完了命令情報は仮想マシンBを表すIDである1とともにシグネチャ生成回路81へ送られる。その結果、先ほどと同様、シグネチャ・レジスタに付随する選択回路84ではシグネチャ・レジスタ1(83−1)が選択されるので、新たなシグネチャは、シグネチャ・レジスタ1(83−1)の内容と完了命令情報を元に生成され、シグネチャ・レジスタ1(83−1)へ保存されることになる。
以上のように、複数のシグネチャ・レジスタと選択回路を用意することで、仮想マシンが切り替わった場合でも、シグネチャ・レジスタの値をメモリへ退避したり、メモリからシグネチャ・レジスタの値を復帰したりする必要がなく、簡単に仮想マシンごとのシグネチャを別々に記録することが可能となる。このことは、実施例1のフロー(図7)に対応する実施例2のフローを図10からも明らかである。
図10において、まず、S101で仮想マシンの切り替えイベントが発生する。次にS102で、シグネチャ有効/無効制御ビット82を「無効」にする。そして、S103でレジスタ・ファイル内の仮想マシンIDレジスタの値が、実行する仮想マシンIDに書き換えられる。
S104でシグネチャ有効/無効制御ビット82を「有効」にする。そして、S105で次の仮想マシンの処理が実行される。
このように、実施例1のフローである図7では、仮想マシンの実行が切り替わる度に、シグネチャ・レジスタの内容を退避したり、値をシグネチャ・レジスタに復帰したりする処理が必要であったが、実施例2のフローである図10では仮想マシンの切り替え毎にシグネチャ・レジスタの値を保存、クリアする必要がなくなり、容易に複数の仮想マシンが混在する環境でシグネチャ生成を行うことが可能となることがわかる。
そして、上述のように生成され、複数のシグネチャ・レジスタに保存されているシグネチャによって、実施例1の図4で示したのと同様に、多重化システムの検証が行われる。実施例2は、実施例1とは異なり複数の仮想マシンがそれぞれ処理を実行しているが、仮想マシンごとに実行した命令をカウントしておいて、所定の命令数になった時点で割りこみを発生し、複数あるプロセッサのうち一つのプロセッサにシステム内のシグネチャ・レジスタの値を回収して比較処理を行う。その際、各プロセッサの物理的なタイミングはバラバラでも構わず、その場合は早く終わった仮想マシンが、遅い仮想マシンの実行終了を待つことになる(あるいは、待たずに投機的に次の処理を進める)。
以上、実施例1、実施例2について詳細に説明した。実施例1および実施例2を実現するには、従来のマイクロプロセッサにシグネチャ生成回路とシグネチャ有効/無効制御ビットとシグネチャ・レジスタを付加するだけでよく、簡易な回路で、また比較的安価に実現可能であることがわかる。
本実施例によれば、out−of−order実行を行うプロセッサにおいても正確にシグネチャを生成することが可能である。また、本シグネチャ生成方法は容易かつ比較的
安価に実現できる。
また、out−of−order実行を行うマイクロプロセッサで構成される多重化システムにおいて信頼性を検証することが可能となり、高性能かつ高信頼な多重化システムを提供することが可能となる。
尚、本発明は上述した実施例に限定されることはなく、その要旨を逸脱しない範囲で様々な応用が可能であることはいうまでもない。最初にも述べたが本実施例では多重化システムとして図1のように複数のプロセッサが並列に動作するシステム構成を示して説明をしたが、一つのプロセッサで同じ処理をn回繰り返し、生成されるシグネチャを比較するという構成の多重化システムでもかまわない。その場合、図4では、S41からS45の処理をn回繰り返し、それぞれの処理に対応するシグネチャを生成し、他のレジスタ等に保存しておき、その後S46でシグネチャを回収して比較、検証処理を行うことになる。また、実施例2では、完了命令情報は実施例1(A)と同様であったが、実施例2においても完了命令情報が実施例1(B)のようにメモリへのメモリ書き込み情報のみを用いる構成にしてもかまわない。このように本発明は本発明は上述の実施形態に限定されるものではなく、その要旨を変更しない範囲内で適宜変形して実施できる。
以上の実施例1および実施例2を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
命令実行がプログラム順序に関係なく行われるプロセッサであって、
命令を実行し、実行終了した命令について終了情報を送信する実行手段と、
前記実行手段が送信した終了情報を受信し、実行終了した命令に対する結果を前記プログラム順に並べ直して命令実行を確定し、確定した命令について命令実行が確定したことを通知する完了命令情報を送信するリタイア手段と、
前記リタイア手段から前記完了命令情報を受信し、該完了命令情報を用いてシグネチャを生成するシグネチャ生成手段と、
を備えることを特徴とするプロセッサ。
(付記2)
更に、前記シグネチャ生成手段で生成されたシグネチャを格納するシグネチャ・レジスタを備え、
一定の命令数毎に前記実行手段が発生するタスクスイッチにより、前記シグネチャ・レジスタに格納された値を読み出して、比較検証することを特徴とする付記1記載のプロセッサ。
(付記3)
前記シグネチャ生成手段は、前記完了命令情報のうち、前記マイクロプロセッサの外部に影響を与える情報を用いてシグネチャを生成することを特徴とする付記1または付記2記載のプロセッサ。
(付記4)
前記外部に影響を与える情報とは、前記完了命令情報のうちメモリへの書き込み情報のみを抽出したものであることを特徴とする付記3記載のプロセッサ。
(付記5)
前記シグネチャ生成手段で生成されたシグネチャを格納する、複数のシグネチャ・レジスタと、
命令実行時の状態に基づいて、前記生成されたシグネチャをいずれの前記シグネチャ・レジスタに格納するかを選択する選択手段と、
を備えることを特徴とする付記1記載のプロセッサ。
(付記6)
前記命令実行の状態とは、いずれの仮想マシンで実行されたか、またはいずれのプロセスで実行されたか、を示す仮想マシンIDまたはプロセスIDであることを特徴とする付
記5記載のプロセッサ。
(付記7)
命令を実行し、実行終了した命令についての終了情報を送信する実行手段と、
前記実行手段が送信した終了情報を受信し、実行終了した命令に対する結果を前記プログラム順に並べ直して命令実行を確定し、確定した命令について命令実行が確定したことを通知する完了命令情報を送信するリタイア手段と、
前記リタイア手段から前記完了命令情報を受信し、該完了命令情報を用いてシグネチャを生成するシグネチャ生成手段と、
を備える、命令実行がプログラム順序に関係なく行われるプロセッサを複数接続して構成される多重化システムにおいて、
ある特定の前記プロセッサが、一定量の処理に対応してそれぞれの前記プロセッサで生成される前記シグネチャを複数以上収集し、該収集したシグネチャを比較し一致検証を行う検証手段を備えることを特徴とする多重化システム。
(付記8)
命令実行がプログラム順序に関係なく行われるプロセッサにおけるシグネチャの生成方法であって、
命令が実行され、実行終了した命令の結果が前記プログラム順に並べ直されて命令実行が確定された、ということを示す完了命令情報を用いてシグネチャを生成する、
ことを特徴とするプロセッサにおけるシグネチャの生成方法。
(付記9)
前記完了命令情報のうち、前記プロセッサの外部に影響を与える情報のみを用いて前記シグネチャを生成することを特徴とする付記8記載の生成方法。
(付記10)
前記プロセッサは、生成されたシグネチャを格納するシグネチャ・レジスタを複数備え、
命令実行時の状態により、前記生成されたシグネチャを格納するレジスタを前記複数のシグネチャ・レジスタから選択して格納することを特徴とする付記8または付記9記載のシグネチャの生成方法。
(付記11)
命令実行がプログラム順序に関係なく行われるプロセッサを複数接続して構成される多重化システムにおける検証方法であって、
それぞれの前記プロセッサは、命令が実行され、実行終了した命令の結果が前記プログラム順に並べ直されて命令実行が確定された、ということを示す完了命令情報を用いてシグネチャを生成し、
ある特定の前記プロセッサが、一定量の処理に対応してそれぞれの前記プロセッサで生成される前記シグネチャを複数以上収集し、該収集したシグネチャを比較し一致検証を行う、
ことを特徴とする多重化システムにおける検証方法。
多重化システムの全体構成を示す図である。 プロセッサの構成を示す図である。 実施例1のプロセッサの構成(一部)を示す図である。 実施例1のプロセッサによって構成される多重化システムの処理の流れを示す図である。 実施例1(A)の構成を示す図である。 実施例1(B)の構成を示す図である。 実施例1を仮想マシンやプロセス単位で多重実行する多重化高信頼システムに適用する場合の処理の流れを示す図である。 実施例2のプロセッサの構成(一部)を示す図である。 実施例2の構成を示す図である。 実施例2の処理の流れを示す図である。 従来の多重実行方式を示す図である。
符号の説明
10 多重化システム
11 プロセッサ
12 データ記憶部
13 通信路
21 リタイアユニット
22 スケジュール&命令発行ユニット
23 レジスタファイル
24 実行ユニット
25 フェッチ&デコードユニット
26 L1命令キャッシュ
27 L1データキャッシュ
28 L2キャッシュ
29 リオーダーバッファ
31 シグネチャ生成回路
32 シグネチャ有効/無効制御ビット
33 シグネチャ・レジスタ
51 命令順序保存ユニット
52 完了処理ユニット
53 リオーダーバッファ
61 メモリ書込命令抽出ユニット
81 シグネチャ生成回路
82 シグネチャ有効/無効制御ビット
83 シグネチャ・レジスタ
84 選択回路
91 命令順序保存ユニット
92 完了処理ユニット

Claims (8)

  1. 命令実行がプログラム順序に関係なく行われるプロセッサであって、
    命令を実行し、実行終了した命令について終了情報を送信する実行手段と、
    前記実行手段が送信した終了情報を受信し、実行終了した命令に対する結果を前記プログラム順に並べ直して命令実行を確定し、確定した命令について命令実行が確定したことを通知する完了命令情報を送信するリタイア手段と、
    前記リタイア手段から前記完了命令情報を受信し、該完了命令情報を用いてシグネチャを生成するシグネチャ生成手段と、
    を備え
    並列にアウト・オブ・オーダで実行される命令が所定量完了した後にシグネチャを取得して、検証を行うことを特徴とするプロセッサ。
  2. 更に、前記シグネチャ生成手段で生成されたシグネチャを格納するシグネチャ・レジスタを備え、
    一定の命令数毎に前記実行手段が発生するタスクスイッチにより、前記シグネチャ・レジスタに格納された値を読み出して、比較検証することを特徴とする請求項1記載のプロセッサ。
  3. 前記シグネチャ生成手段は、前記完了命令情報のうち、メモリへの書き込み情報のみを抽出したという情報を用いてシグネチャを生成することを特徴とする請求項1または請求項2記載のプロセッサ。
  4. 前記シグネチャ生成手段で生成されたシグネチャを格納する、複数のシグネチャ・レジスタと、
    いずれの仮想マシンで実行されたか、またはいずれのプロセスで実行されたか、を示す仮想マシンIDまたはプロセスIDに基づいて、前記生成されたシグネチャをいずれの前記シグネチャ・レジスタに格納するかを選択する選択手段と、
    を備えることを特徴とする請求項1記載のプロセッサ。
  5. 命令を実行し、実行終了した命令についての終了情報を送信する実行手段と、
    前記実行手段が送信した終了情報を受信し、実行終了した命令に対する結果を前記プログラム順に並べ直して命令実行を確定し、確定した命令について命令実行が確定したことを通知する完了命令情報を送信するリタイア手段と、
    前記リタイア手段から前記完了命令情報を受信し、該完了命令情報を用いてシグネチャを生成するシグネチャ生成手段と、
    を備える、命令実行がプログラム順序に関係なく行われるプロセッサを複数接続して構成される多重化システムにおいて、
    ある特定の前記プロセッサが、並列にアウト・オブ・オーダで実行される命令の、一定量の処理が完了後、それぞれの前記プロセッサで生成される前記シグネチャを複数以上収集し、該収集したシグネチャを比較し一致検証を行う検証手段を備えることを特徴とする多重化システム。
  6. 命令実行がプログラム順序に関係なく行われるプロセッサにおけるシグネチャの生成方法であって、
    命令が実行され、実行終了した命令の結果が前記プログラム順に並べ直されて命令実行が確定された、ということを示す完了命令情報を用いてシグネチャを生成し、並列にアウト・オブ・オーダで実行される命令が所定量完了した後にシグネチャを取得する、
    ことを特徴とするプロセッサにおけるシグネチャの生成方法。
  7. 前記プロセッサは、生成されたシグネチャを格納するシグネチャ・レジスタを複数備え、
    命令実行時の状態により、前記生成されたシグネチャを格納するレジスタを前記複数のシグネチャ・レジスタから選択して格納することを特徴とする請求項記載のシグネチャの生成方法。
  8. 命令実行がプログラム順序に関係なく行われるプロセッサを複数接続して構成される多重化システムにおける検証方法であって、
    それぞれの前記プロセッサは、命令が実行され、実行終了した命令の結果が前記プログラム順に並べ直されて命令実行が確定された、ということを示す完了命令情報を用いてシグネチャを生成し、
    ある特定の前記プロセッサが、並列にアウト・オブ・オーダで実行される命令の、一定量の処理が完了後、それぞれの前記プロセッサで生成される前記シグネチャを複数以上収集し、該収集したシグネチャを比較し一致検証を行う、
    ことを特徴とする多重化システムにおける検証方法。
JP2008085272A 2008-03-28 2008-03-28 マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法 Expired - Fee Related JP5315748B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008085272A JP5315748B2 (ja) 2008-03-28 2008-03-28 マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法
US12/390,894 US20090249034A1 (en) 2008-03-28 2009-02-23 Processor and signature generation method, and multiple system and multiple execution verification method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008085272A JP5315748B2 (ja) 2008-03-28 2008-03-28 マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法

Publications (2)

Publication Number Publication Date
JP2009238056A JP2009238056A (ja) 2009-10-15
JP5315748B2 true JP5315748B2 (ja) 2013-10-16

Family

ID=41118914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008085272A Expired - Fee Related JP5315748B2 (ja) 2008-03-28 2008-03-28 マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法

Country Status (2)

Country Link
US (1) US20090249034A1 (ja)
JP (1) JP5315748B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009054637A1 (de) * 2009-12-15 2011-06-16 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US9256426B2 (en) * 2012-09-14 2016-02-09 General Electric Company Controlling total number of instructions executed to a desired number after iterations of monitoring for successively less number of instructions until a predetermined time period elapse
US9858207B2 (en) * 2013-02-06 2018-01-02 International Business Machines Corporation Page level key-based memory protection
US9274904B2 (en) * 2013-06-18 2016-03-01 Advanced Micro Devices, Inc. Software only inter-compute unit redundant multithreading for GPUs
CN106209734B (zh) * 2015-04-30 2019-07-19 阿里巴巴集团控股有限公司 进程的身份认证方法和装置
JP2019053617A (ja) * 2017-09-15 2019-04-04 株式会社東芝 システムlsiおよびシステムlsiの故障検出方法
US11151002B2 (en) * 2019-04-05 2021-10-19 International Business Machines Corporation Computing with unreliable processor cores
EP4300221A1 (de) * 2022-07-01 2024-01-03 Siemens Aktiengesellschaft Vorrichtung und verfahren zur steuerung einer prozessanlage sowie prozesssteuerungssystem

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61208133A (ja) * 1985-03-12 1986-09-16 Hitachi Ltd 仮想計算機システムにおける状態レジスタ制御装置
JP2500038B2 (ja) * 1992-03-04 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサ・コンピュ―タ・システム、フォ―ルト・トレラント処理方法及びデ―タ処理システム
KR100248903B1 (ko) * 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
JP3088303B2 (ja) * 1996-09-09 2000-09-18 日本電気アイシーマイコンシステム株式会社 キャッシュ・メモリ・バンク制御装置
JPH1185713A (ja) * 1997-09-09 1999-03-30 Nec Corp マルチコンピュータシステム
US6751749B2 (en) * 2001-02-22 2004-06-15 International Business Machines Corporation Method and apparatus for computer system reliability
US8799706B2 (en) * 2004-03-30 2014-08-05 Hewlett-Packard Development Company, L.P. Method and system of exchanging information between processors
US20060020852A1 (en) * 2004-03-30 2006-01-26 Bernick David L Method and system of servicing asynchronous interrupts in multiple processors executing a user program

Also Published As

Publication number Publication date
JP2009238056A (ja) 2009-10-15
US20090249034A1 (en) 2009-10-01

Similar Documents

Publication Publication Date Title
JP5315748B2 (ja) マイクロプロセッサおよびシグネチャ生成方法ならびに多重化システムおよび多重化実行検証方法
Ray et al. Dual use of superscalar datapath for transient-fault detection and recovery
CN111164578B (zh) 核内锁步模式的错误恢复
US6968476B2 (en) Checkpointing a superscalar, out-of-order processor for error recovery
KR101546033B1 (ko) Smt 기계에서 비교 및 전달 명령어를 사용한 안정적 실행
US6751749B2 (en) Method and apparatus for computer system reliability
CN109891393B (zh) 使用检查器处理器的主处理器错误检测
JP4603185B2 (ja) 計算機及びその誤り回復方法
US20110126051A1 (en) Error recover within processing stages of an integrated circuit
US7757237B2 (en) Synchronization of threads in a multithreaded computer program
US20060190702A1 (en) Device and method for correcting errors in a processor having two execution units
US7467327B2 (en) Method and system of aligning execution point of duplicate copies of a user program by exchanging information about instructions executed
WO2007005818A2 (en) Reducing the uncorrectable error rate in a lockstepped dual-modular redundancy system
US6199171B1 (en) Time-lag duplexing techniques
JP2005166057A (ja) 障害検出コンピュータシステム
CN108694094B (zh) 用于处理存储器访问操作的装置和方法
US7146530B2 (en) Targeted fault tolerance by special CPU instructions
Haas et al. Fault-tolerant execution on cots multi-core processors with hardware transactional memory support
Osinski et al. A survey of fault tolerance approaches on different architecture levels
Gao et al. Using explicit output comparisons for fault tolerant scheduling (FTS) on modern high-performance processors
US20070067677A1 (en) Program-controlled unit and method
JP2009238068A (ja) 通信制御装置、通信制御方法
Franklin Incorporating fault tolerance in superscalar processors
US8745440B1 (en) Computer-implemented system and method for providing software fault tolerance
JPH1196006A (ja) 情報処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121210

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130624

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees