JP3654910B2 - コンピュータ・システムにおけるエラー訂正方法および装置 - Google Patents
コンピュータ・システムにおけるエラー訂正方法および装置 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 42
- 238000007689 inspection Methods 0.000 claims description 78
- 230000007246 mechanism Effects 0.000 claims description 28
- 238000012360 testing method Methods 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000013507 mapping Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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
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記載のシステムにおいて、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記手段が、比較した状態における差異の検出に応答して、やり直すべき前記命令シーケンスの部分を再セットすることを特徴とするシステム。
- 請求項3記載のシステムにおいて、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記手段が、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で、探索を実行することを特徴とするシステム。
- 請求項4記載のシステムにおいて、前記実行する探索が二分探索であることを特徴とするシステム。
- 請求項1記載のシステムにおいて、
前記制御機構が、更に、外部イベントを前記基準システムに供給する手段を備え、
該手段が、更に、外部イベントを前記基準システムに供給する前記手段によって供給される外部イベントを記録する手段を備え、
前記制御機構が、前記基準システムの記録された外部イベントを、命令シーケンスの実行中における前記検査システムに対する外部イベントとして利用する手段を備えることを特徴とするシステム。 - 請求項6記載のシステムにおいて、前記制御機構が、外部イベント、および外部イベントが供給された前記比較可能点を変化させる手段を備えることを特徴とするシステム。
- 請求項2記載のシステムにおいて、
前記制御機構が、更に、外部イベントを前記基準システムに供給する手段を備え、
該手段が、更に、外部イベントを前記基準システムに供給する前記手段によって供給される外部イベントを記録する手段を備え、
前記制御機構が、前記基準システムの記録された外部イベントを、命令シーケンスの実行をやり直す際に、前記基準システムおよび前記検査システムに対する外部イベントとして利用する手段を備えることを特徴とするシステム。 - 請求項6記載のシステムにおいて、前記制御機構が、外部イベントの供給を変化させる間、前記基準システムおよび前記検査システムの各々における前記命令シーケンスの選択可能な比較可能点間の部分の実行をやり直す手段を備えることを特徴とするシステム。
- 請求項1記載のシステムにおいて、前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較する前記手段が、異なる状態を選択可能であることを特徴とするシステム。
- コンピュータ・システムにおいてエラーを検出するための方法であって、
基準システムおよび、前記基準システム上で実行される プログラムの命令を仮想機械コードとしてネーティブ機 械コードへ動的にコンパイルしながら実行する、エラー を訂正すべき検査システムの各々に対して、正しく実行されれば前記2つのシステムの各々において同じ結果をもたらす、一連の命令シーケンスを供給するステップと、
前記基準システムおよび検査システムの各々において、前記命令シーケンスを実行するステップと、
前記プログラムの実行における前記仮想機械コードとネ ーティブ機械コードの中にある比較可能点において、前記基準システムおよび前記検査システムの状態を代理を 用いて検出し記録するステップと、
前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較するステップと、
を含むことを特徴とする方法。 - 請求項11記載の方法であって、更に、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直すステップを備えることを特徴とする方法。
- 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、比較した状態における差異の検出に応答して行われることを特徴とする方法。
- 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で、探索を実行するステップを含むことを特徴とする方法。
- 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で二分探索を実行するステップを含むことを特徴とする方法。
- 請求項12記載の方法において、前記システム間で比較した状態において差異が検出された場合、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の実行をやり直す前記ステップが、前記検査システムおよび前記基準システムにおいて状態が正しく比較された最後の比較可能点と、比較した状態において差異が検出された比較可能点との間で二分探索を実行するステップを含み、前記探索技法が、探索速度を高めるように選択されることを特徴とする方法。
- 請求項11記載の方法であって、更に、
外部イベントを前記基準システムに供給するステップと、
外部イベントを前記基準システムに供給する前記手段によって供給される外部イベントを記録するステップと、
前記基準システムの記録された外部イベントを、命令シーケンスの実行中における前記検査システムに対する外部イベントとして利用するステップと、
を含むことを特徴とする方法。 - 請求項17記載の方法であって、更に、外部イベント、および外部イベントが供給された前記比較可能点を変化させるステップを含むことを特徴とする方 法。
- 請求項12記載の方法であって、更に、
外部イベントを前記基準システムに供給するステップと、
前記基準システムに供給された外部イベントを記録するステップと、
命令シーケンスの実行をやり直す際に、前記基準システムの記録された外部イベントを、前記基準システムおよび前記検査システムに対する外部イベントとして利用するステップと、
を含むことを特徴とする方法。 - 請求項19記載の方法において、前記基準システムおよび前記検査システムの各々において、前記命令シーケンスの選択可能な比較可能点の間の部分の前記シーケンスの実行をやり直す前記ステップが、外部イベントの供給を変化させるステップを含むことを特徴とする方法。
- 請求項11記載の方法において、前記命令シーケンスの終点を含む、前記命令シーケンスにおける選択可能な比較可能点において、前記基準システムおよび前記検査システムの前記検出された状態を比較する前記ステップが、比較する状態を選択するステップを含むことを特徴とする方法。
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)
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)
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 |
-
1997
- 1997-02-28 US US08/807,542 patent/US5905855A/en not_active Expired - Lifetime
-
1998
- 1998-02-13 WO PCT/US1998/002673 patent/WO1998038575A1/en active IP Right Grant
- 1998-02-13 EP EP98905051A patent/EP0961972B1/en not_active Expired - Lifetime
- 1998-02-13 JP JP53768198A patent/JP3654910B2/ja not_active Expired - Fee Related
- 1998-02-13 AT AT98905051T patent/ATE305633T1/de not_active IP Right Cessation
- 1998-02-13 KR KR10-1999-7007910A patent/KR100463809B1/ko not_active IP Right Cessation
- 1998-02-13 CN CNB988027836A patent/CN1229726C/zh not_active Expired - Lifetime
- 1998-02-13 CA CA002276494A patent/CA2276494C/en not_active Expired - Fee Related
- 1998-02-13 DE DE69831732T patent/DE69831732T2/de not_active Expired - Lifetime
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 |