JP3654910B2 - コンピュータ・システムにおけるエラー訂正方法および装置 - Google Patents

コンピュータ・システムにおけるエラー訂正方法および装置 Download PDF

Info

Publication number
JP3654910B2
JP3654910B2 JP53768198A JP53768198A JP3654910B2 JP 3654910 B2 JP3654910 B2 JP 3654910B2 JP 53768198 A JP53768198 A JP 53768198A JP 53768198 A JP53768198 A JP 53768198A JP 3654910 B2 JP3654910 B2 JP 3654910B2
Authority
JP
Japan
Prior art keywords
reference system
state
instruction sequence
comparable
execution
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
JP53768198A
Other languages
English (en)
Other versions
JP2001519939A (ja
Inventor
クライバー,アレックス
ベディチェク・ロバート
ケッペル,デイヴィッド
Original Assignee
トランスメタ・コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by トランスメタ・コーポレーション filed Critical トランスメタ・コーポレーション
Publication of JP2001519939A publication Critical patent/JP2001519939A/ja
Application granted granted Critical
Publication of JP3654910B2 publication Critical patent/JP3654910B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1641Error detection by comparing the output of redundant processing systems where the comparison is not performed by the redundant processing components

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Detection And Correction Of Errors (AREA)

Description

発明の背景
発明の分野
本発明は、コンピュータ・システムに関し、更に特定すれば、コンピュータ・システムのデバッグを迅速にかつ精度高く行うシステムに関するものである。
従来技術の歴史
コンピュータ・プロセスまたはコンピュータ・システムでは、多くの場合エラーを検出することが望ましい。これを行うためには、通常、正しく機能することがわかっているシステム(「基準システム」)のモデルに対して、設計対象のシステム(「検査システム」)の挙動を検査する。検査システムおよび基準システムの挙動が一致すれば、検査システムは正確に動作していると思われる。これらのシステムの挙動が異なる場合、エラーが検出されたことになる。
2つのシステムの挙動を比較する方法は多数ある。その1つは、各システムに、プロシージャ・コール、状態遷移またはバス信号のような、内部または外部イベントのストリームを発生させ、2つのストリームを比較することである。しかしながら、イベント・ストリームによっては、捕獲するのが難しく、イベント・ストリームの比較を実施できない場合もある。他のイベント・ストリームには、捕獲するのが不経済なものもある。更に他のイベント・ストリームでは、粒が粗すぎて有用なエラーの突き止めができない場合もある。また、イベント・ストリームの中には、当該イベントが、システムの実現手段に対する依存度が高すぎるために、比較できないものもある。
別の比較技法として、双方のシステムを走らせ、走っている最中のシステムの状態を記録し、このシステムの状態を比較することが挙げられる。状態比較は、イベント・ストリームの比較と同じ種類の問題を生ずる可能性がある。ある状態はアクセスするのが不経済であったりあるいは不可能な場合があり、また2つのシステムの実現手段の詳細に対する依存度が高過ぎる場合もある。
状態またはイベントのいずれかの比較を行うために、異なる方法を用いることも可能である。従来より、基準システムが非公式(informal)または実行不可能な場合、その方法は、基準が生成する状態またはイベントとの一貫性がない種々の検査状態またはイベントに対する場当たり的な探索であった。この方法は、勿論、検査システム内に潜み得る重要な問題を見落とす虞れが非常に大きい。
基準が実行可能な仕様である場合、単純に2つのシステムを同時に走らせ、任意の時点における状態を比較して差異を検出できることが望ましい。先に列記した問題は、これを一層難しくする。
各ステップ後のシステム状態の正確な比較は、一般に不可能である。まず、検査システムおよび基準システムは必然的には何らかの相違があるので(機能、実現手段、または性能)、システムの総合的な状態を常時比較することは不可能である。システムによっては、総合的な状態は全く比較不可能な場合もある。例えば、第1オペレーティング・システムを走らせる一方の種類のプロセッサから、第2オペレーティング・システムを走らせる別の種類のプロセッサに、あるアプリケーション・プログラムを移植する場合のように、大きく異なる検査システムの状態を基準システムのそれと比較することが望ましい場合が多い。必要とされているのは、検査システムが基準システムと同じ最終結果を生み出すことである。プロセッサおよびオペレーティング・システムが異なるので、2つのシステムを走らせている際のいずれの時点においても実行されている動作(したがって、状態)は恐らく異なるであろう。
第2に、各システムによる各動作後に、状態を繰り返し比較するのは、法外に負担が大きい可能性がある。2つのシステムの状態を比較するためには、2つのシステムのメモリの全て(第2レベルの記憶装置も含む場合がある)、およびレジスタの全てを比較し、これらが同一か否かについて調べなければならない。状態比較の範囲が大きいため、これは非常に負担がかかる。
最後に、状態情報によっては、利用できないものもあり得る。例えば、読み取り不可能なプロセッサ・レジスタにおける状態や、システムの一方において暗示的に表現される状態である。したがって、比較は多くの場合選択的とならざるを得ない。
実行中のあらゆる時点における状態の比較は困難であるが、検査システムおよび基準システムの結果が同一となるべき時点を選択することは可能である。これらの時点において、状態の比較を行えばよい。しかしながら、これまで、システムを自動的にまたは迅速に比較する方法は考案されていない。
検査システムにおいて迅速にエラーを検出するための方法および装置を提供することが望ましい。
更に特定すれば、コンピュータ・プロセスまたはコンピュータ・システムにおいてエラーを検出する方法およびシステムを提供することが望ましい。
発明の概要
本発明は、コンピュータ・システムにおいてエラーを検出するためのコンピュータ実装プロセスによって実現される。このプロセスは、基準システムおよび検査システムの各々において、ソフトウエア・プログラムの命令シーケンスを実行するステップと、プログラムの実行における比較可能点において、基準システムおよび検査システムの状態を検出し記録するステップと、命令シーケンスの終点を含む、命令シーケンスにおける選択可能な比較可能点において、基準システムおよび検査システムの検出された状態を比較するステップとを含む。
特定の実施形態では、比較したシステムの状態において差異が検出された場合、基準システムおよび検査システムの各々において、選択可能な比較可能点間の命令シーケンスの部分の実行を自動的にやり直す。
本発明のこれらおよびその他の特徴は、以下に続く詳細な説明を、図面と共に参照することによってより良く理解されよう。尚、図面においては、同様の構成要素は、種々の図にわたって同様の参照符号で引用することとする。
【図面の簡単な説明】
図1は、本発明にしたがって設計したシステムのブロック図である。
図2は、本発明にしたがって設計したシステムの一実施形態のブロック図である。
第3図は、本発明によるプロセスを示す図である。
詳細な説明
ここで図1を参照すると、本発明にしたがって構成した装置のブロック図が示されている。本発明は、検査システム15上で実行したいプログラム12からの命令を受け取る制御機構10と、入出力デバイスまたはモデル18を利用する1つ以上の基準システム16とを利用する。プログラム12は、ハードウエアまたはソフトウエア・プログラムまたはプロセス、あるいはこれらの変形とすることができる。検査システム15および基準システム16は、各々、ハードウエア、ソフトウエア、またはそれぞれの何らかの組み合わせとすることができる。制御機構10は、検査システム15および基準システム16双方によるプログラム12の実行を制御する。プログラム12は、図では別個のエンティティとして示すが、これらのシステム内に埋め込んだり、あるいはシステム外部から供給することも可能である。プログラム12は、これらシステムの各々に対して異なる表現を有することができるが、あるレベルでは、同じ結果を計算しなければならない。制御機構10は、プログラム12を徐々に実行し、2つのシステムの状態を徐々に読み取るかあるいは検証する手段を備えるものであれば、いずれの制御手段でもよい。
原理上、単一ステップずつプログラムを実行し、各ステップにおいてシステムの状態を比較することによって、プログラム12を実行することは可能であろう。しかしながら、ステップ毎に大量の状態をチェックすることは、多くの場合法外な負担がかかる。加えて、単純なステップ動作は不可能な場合もある。例えば、一方のシステムではある順序でいくつかの結果を計算し、別のシステムでは異なる順序でこれを計算する場合がある。代わりに、本発明は、制御機構10を用いて、検査システムおよび基準システムにおいて数個のまたは多くのステップを実行する。したがって、制御機構は、検査システム15上で、プログラム12の内わかっている数、しばしば多数のステップを実行する。次いで、制御機構は、基準システム16上でこれらのステップの実行を繰り返す。次に、状態の比較を行えばよい。比較の前に多数のステップを実行することにより、比較のコストは数ステップ全体で償却され、更に本発明は、各ステップにおいて同一の計算を行わないシステムにおいてエラーを発見することができる。
制御機構10は、真または偽のいずれであるかを評価する比較述語(comparison predicate)(評価すべき式)を実行する。比較述語は、制御機構10に埋め込む必要はなく、検査対象システム、分析対象のエラーの種類、およびエラー位置検出処理能力および精度間のトレードオフに応じて様々に変更することができる。加えて、比較述語は、実行中に変更することもできる。例えば、基準システムおよび検査システムが双方ともプロセッサである場合、比較述語は双方のプロセッサのユーザ可視レジスタ(user−visible register)の素早いチェックを頻繁に行うことができ、更に一層負担がかかるが一層総合的な、隠れたレジスタおよびメモリのチェックを周期的に行うことも可能である。
検査システムおよび基準システムの各々が有する状態には、比較には決して用いられず、したがって比較では無視され得るものがあることを注記しておく。同様に、各システムは、ある状態を異なる方法で表現することがあり、比較述語またはその代理(surrogate)は比較を行うために、何らかの状態変換を行わなければならない。「状態」の概念は、イベント・ストリームのデバッグを利用するためには、イベント・ログの状態を含むように拡大してもよい。例えば、述語は、タイム・スタンプを付した入力/出力ログにおいてエレメントを比較し、双方のシステムの外部挙動が同一であることを保証することができる。最後に、述語は、値の全てを明示的に比較する代わりに、例えば、1組の値のチェックサムや巡回冗長チェック(CRC)といった近似情報を計算してもよい。
制御プログラム10は、多数の前提に基づいて実行を制御する。最初に、2つのシステムによって同じプログラム12が正確に実行されている場合、2つのシステムによって実行された個々の命令は異なる場合があるが、検査システムおよび基準システムが各々正しく機能し同じ結果を与える場合、2つのシステムの状態の特定部分には同等であるべき時点があることは認められよう。これらの時点のことを、本明細書では、「仮想時間における比較可能点(comparable points in virtual time)」または単に「比較可能点(comparable point)」と呼ぶことにする。例えば、基準システムが、シミュレータと結合され、複雑なプロセッサ(CISCプロセッサのような)をエミュレートするために用いられる単純なプロセッサ(RISCプロセッサのような)であり、一方検査システムがこのような複雑なプロセッサである場合が考えられる。基準システムは、典型的に、いくつかの命令を実行し、検査システムにおける単一命令の挙動を模擬する。その結果、基準システムの状態は、検査システムにおいて実行される命令全体に対応する時点においてのみ比較可能となる。
また、本発明は、あるレベルにおいて、正しく機能するコンピュータ・システムの動作が決定論的であるという認識にも基づくものである。したがって、命令シーケンスをプロセッサ上で実行し始めると、これらの命令の結果は、割り込みや入出力動作のような命令シーケンスの外部イベントを除いて、最初の機械状態によって決定される。これら外部動作のみが、プログラムがシステム上で実行する態様において変動の原因となり得る。かかる変動をなくすために、ある実施形態では、基準システムおよび検査システムによって1組のデバイス・モデルを共用する。これによって、状態比較に関する多様性の問題の簡素化を図る。追加の利点として、1組のデバイスによるデバッグは、双方のシステムに別個のデバイスを用いる場合よりも格段に速いことが挙げられる。本発明は、デバイス・モデル18から外部イベントを取り込み、これらを検査システムおよび基準システム間で共用する。制御機構10は、仮想時間における同じ比較可能点において検査システムおよび基準システムに外部イベントが提示され、外部イベントが同じ効果を有することを保証する。その結果、2つのシステム15および16は、理論的に、同じ外部イベントを用いて、同じ結果を生成するプログラムを実行していることになる。しかしながら、外部イベントが発生するいずれの2つの比較可能点間にも、多数の比較可能点が存在し得ることを認識すべきであろう。コンピュータ・システムが正しく機能しており、一旦命令シーケンスがプロセッサ上で実行し始め、これらの命令の結果が、命令シーケンスの外部のイベントを除いて決定され、非同期の外部イベントが排除されるということの認識により、2つのシステムによるプログラムの実行中の仮想時間における比較可能点において、比較が可能となる。制御機構10は、基準システムおよび検査システムの状態のある部分を周期的に比較する。これらシステムの状態の一部がいずれかの比較可能点において変化した(そして、比較述語によれば矛盾する)場合、エラー(逸脱(divergence)と呼ぶ)が発見されたことになる。逸脱は、最後の状態比較以降のいずれかの時点で発生したと考えられる。システム・エラーを検出するために十分な状態が正当に利用可能な比較可能点を利用して逸脱を検出することにより、従来技術のエラー検出システムに対して、大きな進展がもたらされる。
また、本発明は、同一状態を示した最後の状態比較以降に仮想時間において探索を行うことによって、エラーの範囲を自動的に狭めることも可能である。これを行うために、状態のずれが検出された最も早い比較可能点において、プログラムの実行を停止する。実行およびやり直し(replay)の間共用可能な外部イベントを記録および再実行することができる結果として、「以前の比較可能点に戻り」、次いで再び順方向に実行し同一の結果を得ることができる。これによって、既に実行され、エラーが発生したプログラムの部分を「やり直す」ことが可能となる。やり直しに対応するために、制御機構10は検査システムおよび基準システムによるプログラムの実行中の、予め選択した比較可能点において、これらシステムの状態に対して周期的にチェックポイントを設定し記録する。こうすると、ずれが検出された古いチェックポイントにシステムの動作を戻し、次いでプログラム12を順方向に所望の比較可能点まで実行することができる。
チェックポイントは、システム状態全てを捕獲する必要はないが、実行を再開するために十分な状態を与えなければならない。状態に設定するチェックポイントを多くする程、デバッグの精度は向上する傾向がある。チェックポイントの設定は、無しから各ステップ毎まで、いずれの周期でも可能であり、チェックポイントの間隔を変更すると、順方向の実行およびやり直し双方のパフォーマンスに影響がある。また、やり直しは、外部イベントのログをも頼りにする。やり直しのために実行を再開する場合、ログから外部イベントを取り込み、やり直しにおける決定論的挙動を確保する。
多くの探索技法が可能である。最良の選択は、順方向の実行およびやり直しの相対速度、状態比較等によって異なる場合がある。更に、エラーが検出された場合、制御機構10は、より総合的なまたは精度が高い状態比較述語を用いることに切り替えることができる。一実施形態では、制御機構10は、以下のように、仮想時間において二分探索を実行することができる。制御機構10は、以前の比較可能点の内、状態比較が成功した時点、恐らく最も厳しいレベルでの最後の比較の時点に、やり直しの開始をセットすることができる。外部イベントが発生したいずれかの2つの比較可能点間に存在する多数の比較可能点によって、ずれの検出後、比較的粒の細かい(fine grained)エラーの分離が可能となる。制御機構10は、状態比較が失敗した比較可能点にやり直しの終了をセットし、次いで、先頭および終了の間の中間にある比較可能点までプログラムのやり直しを実行する。次に、この中間点において、システムの状態を再び比較する。この中間点において状態比較が失敗した場合、やり直しの終了を、この中間の比較可能点にセットし、やり直しを同じ開始点から開始して探索を続行し、開始点および新たな終了点の間の、第2の比較可能点まで継続する。次に、この中間点においてシステムの状態を再び比較する。状態比較が成功した場合、先頭をその比較可能点にセットし、探索を続行する。このようにして、エラーの探索は迅速に挟められる。
探索を終了することができる状況は、多様である。例えば、制御機構10は、探索範囲が小さくなり、これ以上範囲の縮小が不可能となったときに、逸脱探索を終了することができる。その時点において、逸脱が「発見された」と見なす。最小の範囲は、検査システムおよび基準システム、ならびに実行中のプログラムによって異なる。エラーは、ユーザに報告することができる。
制御機構10が同一の外部イベントを検査システムおよび基準システムの各々に提示することにより、非同期の外部イベントから検査システムおよび基準システムを分離する方法は、一貫性を保証しプログラム12のやり直し実行を可能にすることに加えて、多数の利点を提供する。例えば、プログラム12の実行の任意のセグメントにわたって、制御機構10は、外部イベントの速度および分配を、プログラム12の実行の任意のセグメント毎に選択的に変化させることができる。これによって、制御機構は、外部イベントの異常に高い到達速度のような検査状況を発生することが可能となる。
また、制御機構10は、状態比較を行って成功した実行のセグメントを繰り返すことによって、「摂動分析(perturbation analysis)」を行うことも可能である。実行を繰り返す毎に、外部イベントの初期状態または送り出し(delivery)を変えることができるが、実行の最終的な結果が変化しないようにする必要がある。実行毎に最終状態が変化する場合、エラーが検出される。前述のエラー分離技法を用いて、基準システムと比較することにより、エラーの時間的な位置を狭めることができる。例えば、プログラム12の重要な部分を数回走らせて、その度に制御機構10がシーケンス内の異なる命令において割り込みを送り出すか、あるいは検査システムまたは基準システムにおけるキャッシュの初期内容を変更することができる。
本発明は、異なるレベルの複雑度のシステムと共に機能するように適合化されている。例えば、検査システムは、レジスタの名称変更または同様の技法を利用して性能を高めることができる。あるデータは、一方のシステムではハードウエアまたはソフトウエアのキャッシュに入れ、他方のシステムでは主メモリに入れたり、あるいは一方のシステムにおいて暗示的に表すことができる(状態比較を行うためには、問題のデータの再構築が必要となる)。状態を比較する際、位置ではなく名称によって状態の比較を行うために、基準システムおよび検査システムにおいて比較述語が代理を呼び出す。
本発明の実施形態は数多くある。一実施形態では、基準システム16は、単純なデコードおよび発行インタプリタ(decode−and−dispatch interpreter)であり、一方検査システムは、仮想機械コードのネーティブ機械コードへの動的コンパイルを用いて、同じ入力プログラムを実行する。仮想時間における比較可能点を維持するために、基準システムは、フェッチする各命令毎に仮想時間を増分し、一方検査システムは、動的にコンパイルした各ブロック毎に挿入した計装コード(instrumentation code)を用いて、仮想時間を増分する。比較述語は、各システムが実行中の仮想機械に対する状態のみを比較する。
図2に示す本発明の特に有用な実施形態の1つは、デバッガ・プログラム14を介して、2つの異なるシステム上で実行したいプログラム12から命令を受け取る、ソフトウエア制御プログラム20を利用する。デバッガ・プログラム14は、プログラム12を徐々に走らせることができ、更に当該プログラムを走らせるシステムの状態を、所望の増分幅で検査可能にする手段を備えるように適合化されたいずれかの有用なプログラムとして選択することができる。制御プログラム20は、プログラム12を実行する際に、基準システム16および検査システム15双方の動作を制御する。
本発明のこの実施形態では、検査システム15は、プログラム12の命令を、プロセッサが実行可能な命令シーケンスに動的に変換する変換プログラム13を実行するプロセッサをシミュレートし、プログラム12の命令の結果を得る。デバッガ14を用いてプログラム12を実行する際、制御プログラム20は、プログラム12内のわかっている数、多くの場合多数の、元の命令を、システム16に実行させ、次いでシステム15を用いてこれらの命令の実行を繰り返す。
制御プログラム20は、2つのシステム15および16による実行全体を制御する。本発明を実現する装置を示す図2において、デバッガ・ソフトウエア14は、プログラム12から命令シーケンスを受け取る。プログラム12は、Intel社のX86マイクロプロセッサを利用するコンピュータのような、特定のコンピュータ・システム上で走ることがわかっているものとする。本発明にしたがって設計された制御プログラム20は、デバッガ・ソフトウエア14に対する典型的なコンピュータ・システム・インターフェースを備え、検査システム15および基準システム16への命令の適用を制御する。制御プログラム20は、システム15および16が制御プログラム20に対して行うのと同じインターフェースを、デバッガ・ソフトウエア14に提示する。また、制御プログラム20は、それ自体をシステム15および16とそれらのデバイス18との間に介入させ、外部イベントのロギングおよびやり直しを行う。
仮想時間における比較可能点を維持する方法は多くある。一実施形態では、変換プログラム13によって、プログラム12を、検査システム15上で実行する命令セットに対する命令に変換する。この変換プログラム13と組み合わせたマイクロプロセッサを含む検査システム15は、基準システム16が定義するマイクロプロセッサ上で元々実行するように設計された命令セットのプログラムを実行するように設計されている。元のプログラム12の状態と、変換プログラム13によって変換された命令が同一である、仮想時間における比較可能点の決定を可能にするために、変換プログラム13は、プログラム12の各命令の終了と一致し、したがって2つのシミュレーション・モデル15および16を比較する際に使用可能な比較可能点を指示する、変換中の時点をマップする。制御プログラム20は、システム15および16上で命令シーケンスの実行開始および停止をいつどこで行うかについて決定する際に、これらの比較可能点を探す。
この時間ドメイン・マッピングを用いることに加えて、制御プログラム20は、2つのシステム15および16によるプログラム12の実行中の比較可能点において、2つのシミュレーション・モデル15および16のアドレス空間のマッピングを検出する手段を備える。例えば、システムの一方または他方は、レジスタの名称変更または同様の技法を利用して、処理を加速することができる。2つのシステム15および16を用いて状態の一貫性を検査するために、同一であるべきデータを実際に保持するレジスタを決定しなければならない。同様に、メモリ・データは、一方のシステムではプロセッサ・キャッシュに格納されているが未だメモリに格納されておらず、他方のシステムでは同じデータが主メモリに格納されている場合がある。この場合も、有用な結果を得るためには、正しくメモリ比較を行わなければならない。一実施形態では、制御プログラム20は、その制御の下で、抽象レジスタ(abstract register)またはメモリ名に関して、システムに質問する。検査システムおよび基準システムにおける代理は、抽象名から格納位置への専用マッピング(private mapping)を用いて、所望のデータを与える。
一旦これら2つのマッピングを用意したなら、プログラム12から選択した命令シーケンスは、デバッガ・ソフトウエア14によって、制御システム20に供給され実行される。典型的に、デバッガ・ソフトウエア14は、ユーザが決定した順序でプログラムを実行し、選択した時点における実行モデルの状態を判定する機能を備えるが、一方のシステムまたは他方のシステム上におけるプログラムの間で実行の比較を行う機能はない。デバッガ・ソフトウエア14は、命令シーケンスを制御プログラム20に供給する。制御プログラム20は、この命令シーケンスを基準システム16に供給し、基準システム16は命令シーケンスを走らせる。制御プログラム20は、システム16上でシーケンスの実行を開始する前に、シーケンスの開始時のシステム16の状態を記録する。命令シーケンスがシステム上で実行されるに連れて、制御システム20は、各外部イベントを記録し、タイム・スタンプを付けていく。こうして、制御プログラム20は、コマンド、アドレス、およびあらゆるシミュレートされた入出力デバイス18に転送されるデータを含む各入出力動作、ならびにシミュレートされたデバイス18からシステム16に返される応答を記録する。また、制御プログラム20は、システム16がシーケンスの間に応答する各例外も記録する。
次に、制御プログラム20は、同じ命令シーケンスを検査システム15上で、シーケンスが終了する比較可能点まで実行する。命令シーケンスの実行において、基準システム16に対して記録された外部動作(入出力または例外)が、システム16によるシーケンスの実行から得られた結果のログから利用される。したがって、システム16が入出力動作を発生させた場合、その動作から外部で発生したリターンがシステム15に供給される。このように、リターン値は、基準システム16に供給されるものと同一であるので、検査システム15内における結果は、システム16内における結果と同一のはずである。同様に、システム16が割り込みを受け取った場合、この割り込みは制御プログラム20によって記録され、その後検査システム15に供給されるので、その応答は、検査システム15が正しいのであれば、基準システム16の応答と同一のはずである。システム16によるプログラム12の実行中に記録された外部イベントを用いることによって、第2モデルと正確に機能するデバイスをシミュレートする作業が不要となり、シミュレーションに影響を及ぼす外部イベントが同一であることを保証し、こうして非同期の外部イベントのためにプログラムの実行が変動する可能性を排除する。
このようにして、シーケンスはシステム15上で完了する。次に、2つのシステムの状態を比較する。2つのシステムの状態が、シーケンスの終了時に同一である場合、プログラム12からの第2の命令シーケンスがデバッガ14に供給され、2つのシステム15および16上で実行される。
プログラム12からのいずれかの命令シーケンスの実行によって、比較可能点において検査システムおよび基準システムに異なる状態が生成した場合、実行中において、以前にチェックポイントを設定した比較可能点の内、比較で同一状態が得られたところからプログラム12をやり直す。ここに記載する具体的な実施形態では、プロセスは、先に説明したように、二分探索モードで再度実行する。以前の命令シーケンスの実行をやり直す際、基準システムによる実行の間に以前に記録した外部イベントのログを利用し、双方のシステム上における実行に対する外部イベントのあらゆる変動を除去することが有用である。シーケンスの前半が、中間の比較可能点において同一状態を生じた場合、検査システムおよび基準システムのために命令シーケンスの後半の前半分をやり直す。このシーケンスの部分の二分検査は、2つのシミュレーションの逸脱点を素早く分離するように続けられる。
以上の説明からわかるように、この命令シーケンスの実行におけるエラーの二分検査は、エラー点を非常に迅速に分離する。エラーを分離する探索は、二分探索である必要はない。例えば、状態に一貫性があった最近の比較可能点を発見する際に、プログラムを実行する方が、プログラムを逆に辿るよりも、時間的に負担が少ないのであれば、プログラムの少ない方の部分をやり直し、これによって、エラーを分離するためにプログラムを逆に辿らなければならない回数を減少させる方が速い場合もある。いずれの場合でも、オペレータまたは制御プログラムの制御の下で長さが変動し得る長い命令シーケンスによって、本質的に並列に2つのモデルを走らせることができるので、従来技術で必要な厄介なステップ毎の段階的プロセスを必要とせずに、スレーブ・シミュレーション・モデル(slave simulation model)の非常に迅速かつ高精度のデバッグが可能となる。
以上、好適な実施形態に関して本発明を説明したが、本発明の精神および範囲から逸脱することなく、種々の変更や変形も当業者には可能であることは認められよう。したがって、本発明は以下に続く請求の範囲に関して解釈するものとする。

Claims (21)

  1. コンピュータ・システムにおけるエラーを訂正するシステムであって、
    基準システムと、
    前記基準システム上で実行されるプログラムの命令を仮 想機械コードとしてネーティブ機械コードへ動的にコン パイルしながら実行する、エラーを訂正すべき検査システムと、
    記基準システムおよび前記検査システム上でプログラムを実行させるための制御機構と、
    から成り、
    前記制御機構が、
    前記基準システムおよび前記検査システムの各々に対して、前記プログラムの同じ命令シーケンスを表わす命令シーケンスを供給する手段と、
    前記基準システムおよび前記検査システムにおいて、前記プログラムの同じ命令シーケンスを表わす命令シーケンスを実行する手段と、
    前記プログラムの実行中に前記仮想機械コードとネーテ ィブ機械コードの中にある比較可能点において、前記基準システムおよび前記検査システムの状態を代理を用い 検出し記録する手段と、
    前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較する手段と、
    を含むことを特徴とするシステム。
  2. 請求項1記載のシステムであって、更に、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す手段を備えることを特徴とするシステム。
  3. 請求項2記載のシステムにおいて、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記手段が、比較した状態における差異の検出に応答して、やり直すべき前記命令シーケンスの部分を再セットすることを特徴とするシステム。
  4. 請求項3記載のシステムにおいて、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記手段が、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で、探索を実行することを特徴とするシステム。
  5. 請求項4記載のシステムにおいて、前記実行する探索が二分探索であることを特徴とするシステム。
  6. 請求項1記載のシステムにおいて、
    前記制御機構が、更に、外部イベントを前記基準システムに供給する手段を備え、
    該手段が、更に、外部イベントを前記基準システムに供給する前記手段によって供給される外部イベントを記録する手段を備え、
    前記制御機構が、前記基準システムの記録された外部イベントを、命令シーケンスの実行中における前記検査システムに対する外部イベントとして利用する手段を備えることを特徴とするシステム。
  7. 請求項6記載のシステムにおいて、前記制御機構が、外部イベント、および外部イベントが供給された前記比較可能点を変化させる手段を備えることを特徴とするシステム。
  8. 請求項2記載のシステムにおいて、
    前記制御機構が、更に、外部イベントを前記基準システムに供給する手段を備え、
    該手段が、更に、外部イベントを前記基準システムに供給する前記手段によって供給される外部イベントを記録する手段を備え、
    前記制御機構が、前記基準システムの記録された外部イベントを、命令シーケンスの実行をやり直す際に、前記基準システムおよび前記検査システムに対する外部イベントとして利用する手段を備えることを特徴とするシステム。
  9. 請求項6記載のシステムにおいて、前記制御機構が、外部イベントの供給を変化させる間、前記基準システムおよび前記検査システムの各々における前記命令シーケンスの選択可能な比較可能点間の部分の実行をやり直す手段を備えることを特徴とするシステム。
  10. 請求項1記載のシステムにおいて、前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較する前記手段が、異なる状態を選択可能であることを特徴とするシステム。
  11. コンピュータ・システムにおいてエラーを検出するための方法であって、
    基準システムおよび、前記基準システム上で実行される プログラムの命令を仮想機械コードとしてネーティブ機 械コードへ動的にコンパイルしながら実行する、エラー を訂正すべき検査システムの各々に対して、正しく実行されれば前記2つのシステムの各々において同じ結果をもたらす、一連の命令シーケンス供給するステップと、
    前記基準システムおよび検査システムの各々において、前記命令シーケンスを実行するステップと、
    前記プログラムの実行における前記仮想機械コードとネ ーティブ機械コードの中にある比較可能点において、前記基準システムおよび前記検査システムの状態を代理を 用いて検出し記録するステップと、
    前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較するステップと、
    を含むことを特徴とする方法
  12. 請求項11記載の方法であって、更に、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直すステップを備えることを特徴とする方法
  13. 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、比較した状態における差異の検出に応答して行われることを特徴とする方法
  14. 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で、探索を実行するステップを含むことを特徴とする方法
  15. 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で二分探索を実行するステップを含むことを特徴とする方法
  16. 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で二分探索を実行するステップを含み、前記探索技法が、探索速度を高めるように選択されることを特徴とする方法
  17. 請求項11記載の方法であって、更に、
    外部イベントを前記基準システムに供給するステップと、
    外部イベントを前記基準システムに供給する前記手段によって供給される外部イベントを記録するステップと、
    前記基準システムの記録された外部イベントを、命令シーケンスの実行中における前記検査システムに対する外部イベントとして利用するステップと、
    を含むことを特徴とする方法
  18. 請求項17記載の方法であって、更に、外部イベント、および外部イベントが供給された前記比較可能点を変化させるステップを含むことを特徴とする
  19. 請求項12記載の方法であって、更に、
    外部イベントを前記基準システムに供給するステップと、
    前記基準システムに供給された外部イベントを記録するステップと、
    命令シーケンスの実行をやり直す際に、前記基準システムの記録された外部イベントを、前記基準システムおよび前記検査システムに対する外部イベントとして利用するステップと、
    を含むことを特徴とする方法
  20. 請求項19記載の方法において、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の前記シーケンスの実行をやり直す前記ステップが、外部イベントの供給を変化させるステップを含むことを特徴とする方法
  21. 請求項11記載の方法において、前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較する前記ステップが、比較する状態を選択するステップを含むことを特徴とする方法
JP53768198A 1997-02-28 1998-02-13 コンピュータ・システムにおけるエラー訂正方法および装置 Expired - Fee Related JP3654910B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/807,542 US5905855A (en) 1997-02-28 1997-02-28 Method and apparatus for correcting errors in computer systems
US08/807,542 1997-02-28
PCT/US1998/002673 WO1998038575A1 (en) 1997-02-28 1998-02-13 Method and apparatus for correcting errors in computer systems

Publications (2)

Publication Number Publication Date
JP2001519939A JP2001519939A (ja) 2001-10-23
JP3654910B2 true JP3654910B2 (ja) 2005-06-02

Family

ID=25196627

Family Applications (1)

Application Number Title Priority Date Filing Date
JP53768198A Expired - Fee Related JP3654910B2 (ja) 1997-02-28 1998-02-13 コンピュータ・システムにおけるエラー訂正方法および装置

Country Status (9)

Country Link
US (1) US5905855A (ja)
EP (1) EP0961972B1 (ja)
JP (1) JP3654910B2 (ja)
KR (1) KR100463809B1 (ja)
CN (1) CN1229726C (ja)
AT (1) ATE305633T1 (ja)
CA (1) CA2276494C (ja)
DE (1) DE69831732T2 (ja)
WO (1) WO1998038575A1 (ja)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393490B1 (en) * 1997-12-18 2002-05-21 Ian James Stiles Method and system for a programmatic feedback process for end-user support
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6141635A (en) * 1998-06-12 2000-10-31 Unisys Corporation Method of diagnosing faults in an emulated computer system via a heterogeneous diagnostic program
US6205537B1 (en) 1998-07-16 2001-03-20 University Of Rochester Mechanism for dynamically adapting the complexity of a microprocessor
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
WO2000054385A1 (en) * 1999-03-10 2000-09-14 Preview Systems, Inc. User transparent software malfunction detection and reporting
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6405326B1 (en) * 1999-06-08 2002-06-11 International Business Machines Corporation Limited Timing related bug detector method for detecting data races
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
JP5220974B2 (ja) * 1999-10-14 2013-06-26 ブルアーク ユーケー リミテッド ハードウェア実行又はオペレーティングシステム機能の加速のための装置及び方法
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6295612B1 (en) 2000-04-11 2001-09-25 Visteon Global Technologies, Inc. Method and system for independent monitoring of multiple control systems
US7389208B1 (en) 2000-06-30 2008-06-17 Accord Solutions, Inc. System and method for dynamic knowledge construction
US6829719B2 (en) 2001-03-30 2004-12-07 Transmeta Corporation Method and apparatus for handling nested faults
DE10158317B4 (de) * 2001-11-28 2009-06-18 Siemens Ag Verfahren zur Generierung und Ausführung eines diversitären Programmablaufs
US6928509B2 (en) * 2002-08-01 2005-08-09 International Business Machines Corporation Method and apparatus for enhancing reliability and scalability of serial storage devices
CN100377097C (zh) * 2002-08-26 2008-03-26 联发科技股份有限公司 除错装置
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
US7457822B1 (en) * 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
GB0225649D0 (en) * 2002-11-04 2002-12-11 Transitive Technologies Ltd Incremental validation
CN100424653C (zh) * 2003-01-17 2008-10-08 财团法人工业技术研究院 应用于分布式网际网络的Java脚本语言程序错误处理方法
US7921333B2 (en) * 2003-03-19 2011-04-05 Jds Uniphase Corporation Method and systems for providing data replay, reprocess and retrigger functions in an analyzer
CN100403273C (zh) * 2003-07-10 2008-07-16 中国科学院计算技术研究所 基于双向信息流的分布式监控方法
US20050144528A1 (en) * 2003-08-29 2005-06-30 Tim Bucher Computing device configuration manager
US7529897B1 (en) 2003-12-31 2009-05-05 Vmware, Inc. Generating and using checkpoints in a virtual computer system
US7395468B2 (en) * 2004-03-23 2008-07-01 Broadcom Corporation Methods for debugging scan testing failures of integrated circuits
US7581150B2 (en) 2004-09-28 2009-08-25 Broadcom Corporation Methods and computer program products for debugging clock-related scan testing failures of integrated circuits
US7500165B2 (en) 2004-10-06 2009-03-03 Broadcom Corporation Systems and methods for controlling clock signals during scan testing integrated circuits
US8136101B2 (en) * 2005-11-04 2012-03-13 Oracle America, Inc. Threshold search failure analysis
US7797684B2 (en) * 2005-11-04 2010-09-14 Oracle America, Inc. Automatic failure analysis of code development options
US7774761B2 (en) * 2005-12-27 2010-08-10 International Business Machines Corporation Use of memory watch points and a debugger to improve analysis of runtime memory access errors
CN100435114C (zh) * 2006-01-18 2008-11-19 北京大学 基于截取器的软件在线校验方法
KR100800999B1 (ko) 2006-02-17 2008-02-11 삼성전자주식회사 프로그램의 실행흐름을 검사하는 방법 및 장치
US7587663B2 (en) * 2006-05-22 2009-09-08 Intel Corporation Fault detection using redundant virtual machines
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
JPWO2008053709A1 (ja) * 2006-11-02 2010-02-25 日本電気株式会社 半導体集積回路選別試験装置および方法
WO2008053723A1 (fr) * 2006-11-02 2008-05-08 Nec Corporation Circuit intégré semi-conducteur et procédé pour détecter une panne dans une unité de fonctionnement
US20090177866A1 (en) * 2008-01-08 2009-07-09 Choate Michael L System and method for functionally redundant computing system having a configurable delay between logically synchronized processors
JP4610623B2 (ja) * 2008-01-24 2011-01-12 日本電信電話株式会社 設定内容照合装置
US8246822B2 (en) * 2008-02-22 2012-08-21 Briltz Raymond P Water treatment apparatus
US20090249303A1 (en) * 2008-03-31 2009-10-01 International Business Machines Corporation Random access to historical program state for enhanced debugging
WO2009146979A1 (en) * 2008-06-05 2009-12-10 International Business Machines Corporation Method system and computer program for identifying software problems
US7958398B2 (en) * 2008-07-16 2011-06-07 International Business Machines Corporation Reference state information generation
JP5414292B2 (ja) * 2009-01-29 2014-02-12 ルネサスエレクトロニクス株式会社 不良解析装置と方法及びプログラム
US8081003B2 (en) * 2009-02-02 2011-12-20 Infineon Technologies Ag Circuit arrangement with a test circuit and a reference circuit and corresponding method
CN101493790B (zh) * 2009-02-27 2015-08-05 北京中星微电子有限公司 记录回放系统和记录回放方法
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
US8677355B2 (en) * 2010-12-17 2014-03-18 Microsoft Corporation Virtual machine branching and parallel execution
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
CN103913694B (zh) * 2013-01-09 2018-03-27 恩智浦美国有限公司 用于检测集成电路的劣化的监视系统
US9251022B2 (en) * 2013-03-01 2016-02-02 International Business Machines Corporation System level architecture verification for transaction execution in a multi-processing environment
CN105895619B (zh) 2015-01-23 2021-06-25 恩智浦美国有限公司 用于监测集成电路上金属退化的电路
US9563541B2 (en) * 2015-04-27 2017-02-07 Sap Se Software defect detection identifying location of diverging paths
US9959197B2 (en) * 2015-08-31 2018-05-01 Vmware, Inc. Automated bug detection with virtual machine forking
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) * 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US11074153B2 (en) 2019-04-01 2021-07-27 Microsoft Technology Licensing, Llc Collecting application state in a runtime environment for reversible debugging
US11113182B2 (en) * 2019-04-01 2021-09-07 Microsoft Technology Licensing, Llc Reversible debugging in a runtime environment
CN112612692B (zh) * 2020-12-07 2024-01-26 中标软件有限公司 一种linux系统性能调优的方法
JP7343197B2 (ja) * 2021-03-15 2023-09-12 Necプラットフォームズ株式会社 情報処理装置、情報処理システム、情報処理方法及びプログラム
US11852676B2 (en) * 2022-02-15 2023-12-26 Stmicroelectronics S.R.L. Integrated circuit with reference sub-system for testing and replacement

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0096510B1 (en) * 1982-06-03 1988-07-27 LUCAS INDUSTRIES public limited company Control system primarily responsive to signals from digital computers
JPS58221453A (ja) * 1982-06-17 1983-12-23 Toshiba Corp 多重系情報処理装置
US4814971A (en) * 1985-09-11 1989-03-21 Texas Instruments Incorporated Virtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint state
US5434998A (en) * 1988-04-13 1995-07-18 Yokogawa Electric Corporation Dual computer system
US5086499A (en) * 1989-05-23 1992-02-04 Aeg Westinghouse Transportation Systems, Inc. Computer network for real time control with automatic fault identification and by-pass
US5138708A (en) * 1989-08-03 1992-08-11 Unisys Corporation Digital processor using current state comparison for providing fault tolerance
EP0455922B1 (en) * 1990-05-11 1996-09-11 International Business Machines Corporation Method and apparatus for deriving mirrored unit state when re-initializing a system
US5590277A (en) * 1994-06-22 1996-12-31 Lucent Technologies Inc. Progressive retry method and apparatus for software failure recovery in multi-process message-passing applications
US5737531A (en) * 1995-06-27 1998-04-07 International Business Machines Corporation System for synchronizing by transmitting control packet to omit blocks from transmission, and transmitting second control packet when the timing difference exceeds second predetermined threshold
US5729554A (en) * 1996-10-01 1998-03-17 Hewlett-Packard Co. Speculative execution of test patterns in a random test generator

Also Published As

Publication number Publication date
EP0961972A1 (en) 1999-12-08
CA2276494A1 (en) 1998-09-03
CN1229726C (zh) 2005-11-30
EP0961972B1 (en) 2005-09-28
US5905855A (en) 1999-05-18
EP0961972A4 (en) 2002-12-04
DE69831732D1 (de) 2006-02-09
CA2276494C (en) 2004-05-04
WO1998038575A1 (en) 1998-09-03
CN1252875A (zh) 2000-05-10
KR100463809B1 (ko) 2004-12-29
DE69831732T2 (de) 2006-06-29
ATE305633T1 (de) 2005-10-15
JP2001519939A (ja) 2001-10-23
KR20000075835A (ko) 2000-12-26

Similar Documents

Publication Publication Date Title
JP3654910B2 (ja) コンピュータ・システムにおけるエラー訂正方法および装置
US7165074B2 (en) Software development test case analyzer and optimizer
Scott et al. Minimizing faulty executions of distributed systems
JP4766540B2 (ja) プログラムコード変換の検証を実行するための方法および装置
Ronsse et al. Record/replay for nondeterministic program executions
EP3577564B1 (en) Efficient retrieval of memory values during trace replay
Leungwattanakit et al. Modular software model checking for distributed systems
US8230402B2 (en) Testing and debugging of dynamic binary translation
US20080177527A1 (en) Simulation system, simulation method and simulation program
US5592674A (en) Automatic verification of external interrupts
KR20140033616A (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
US7684971B1 (en) Method and system for improving simulation performance
US11836070B2 (en) Reducing trace recording overheads with targeted recording via partial snapshots
US11113182B2 (en) Reversible debugging in a runtime environment
CN109783837A (zh) 仿真设备、仿真系统、仿真方法和仿真程序
US8412496B2 (en) Simulation system, method, and program
CN111324948B (zh) 模拟方法及模拟系统
JPH1031595A (ja) シミュレーション装置及びシミュレーション方法
CN110597705B (zh) 一种可重复获取测试数据的程序调试方法及装置
US7162618B2 (en) Method for enhancing the visibility of effective address computation in pipelined architectures
Glamm et al. Automatic verification of instruction set simulation using synchronized state comparison
JPH07253909A (ja) マイクロプログラム検証方法
Chang et al. An Effective Parallel Program Debugging Approach Based on Timing Annotation
WO2024165828A1 (en) Computer-implemented methods of verifying a processor design under test, and related systems
JP2001051864A (ja) データ処理装置の試験実行方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040615

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040914

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041213

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: 20050201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050302

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090311

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090311

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100311

Year of fee payment: 5

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20100311

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20110311

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110311

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120311

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130311

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130311

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20140311

Year of fee payment: 9

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees