CN1229726C - 纠正计算机系统内错误的方法和装置 - Google Patents

纠正计算机系统内错误的方法和装置 Download PDF

Info

Publication number
CN1229726C
CN1229726C CNB988027836A CN98802783A CN1229726C CN 1229726 C CN1229726 C CN 1229726C CN B988027836 A CNB988027836 A CN B988027836A CN 98802783 A CN98802783 A CN 98802783A CN 1229726 C CN1229726 C CN 1229726C
Authority
CN
China
Prior art keywords
reference system
test macro
state
external event
comparison point
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 - Lifetime
Application number
CNB988027836A
Other languages
English (en)
Other versions
CN1252875A (zh
Inventor
A·克雷博
R·贝迪切克
D·坎普尔
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.)
Full Simeida LLC
Transmeta Inc
Original Assignee
Transmeta Inc
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 Transmeta Inc filed Critical Transmeta Inc
Publication of CN1252875A publication Critical patent/CN1252875A/zh
Application granted granted Critical
Publication of CN1229726C publication Critical patent/CN1229726C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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

Abstract

一种用于检测计算机系统内差错的计算机实现的进程,包含以下步骤:在参照系统(16)与测试系统(15)上执行软件程序(12)的指令序列;在程序(12)执行过程中在可比较点上检测与记录参照系统(16)与测试系统(15)的状态;以及在包括指令序列结束在内的指令序列中比较可选比较点上参照系统(16)与测试系统(15)的被检测的状态。在特定实施例中,如果检测到系统比较状态有差异,则自动回放参照系统(16)与测试系统(15)可比较点之间指令序列的执行部分。

Description

纠正计算机系统内错误的方法和装置
发明领域
本发明涉及计算机系统,特别是涉及快速和准确调试计算机系统的系统。
背景技术
经常需要检测计算机进程或计算机系统内的差错。为此,一种典型的方法是测试被指定系统(“测试系统”)相对已知具有正确功能的系统模型(“参照系统”)的行为。如果测试行为与参照系统一致,则假定系统具有正确的功能。如果系统行为有差异,则检测到差错。
比较两种系统行为的方法有多种。一种是使每种系统生成内部或外部事件流,例如过程调用、状态过渡或总线信号,并比较两种流。但是有些事件流可能太难以捕捉而使事件流比较不实用。其它的事件流捕捉起来代价可能非常高。还有其它事件流提供的差错定位可能过于粗略。在一些事件流中,事件可能太依赖于系统的实现方式并且由此导致不兼容的问题。
另一种比较技术是运行两种系统,记录运行时的系统状态并进行比较。状态比较可能会遇到与事件流比较同样的问题。访问某些状态可能代价昂贵或者不可能,或者可能太依赖于两种系统的实现细节。
不同的方法可以用来完成状态或事件的比较。传统上如果参照系统是非正式的或者非可执行的,则方法属于对各种与参照系统产生的状态或事件不兼容的各种测试状态或事件的特定搜索。因此这种方法很有可能将驻留在测试系统内的重要问题遗漏。
如果参照系统是可执行的规程,则需要能够简单地同时运行两种系统并在任意时刻比较状态以检测差异。上述问题使其更为困难。
通常情况下在每步后精确比较系统状态是不可能的。首先,测试系统与参照系统在一些方面不可避免地不同(例如功能、实现方式或性能)从而使得系统的总体状态不是一直可比较的。对于某些系统,总体状态从来就不可比特。例如,当将一种应用程序从一种运行第一操作系统的处理器移植到运行第二操作系统的另一种处理器时,通常需要比较与参照系统明显不同的测试系统的状态。所需要的是测试系统产生与参照系统一样的最终结果。由于处理器和操作系统的不同,运行两种系统的任意时刻完成的操作(因此状态)也可能不同。
其次,在每个系统的每次操作后不断比较状态代价可能过于昂贵。为了比较两种系统的状态,两种系统所有的存储器(可能包括二级存储器)和所有的寄存器都必须比较以确认是否一致。数量极大的状态比较的规模使其代价非常高昂。
最后,某些状态信息可能无法得到,例如在不可读处理器寄存器中的状态或者在一种系统中隐含表示的状态。因此比较必须是选择性的。
即使比较执行期间所有点的状态是困难的,也可以选择测试系统与参照系统结果应该一致的点。在这些点上,可以进行状态比较。但是迄今为止,尚无自动或快速的比较系统的方法。
需要提供一种快速检测测试系统内差错的方法和装置。
具体而言,需要提供一种检测计算机进程或计算机系统内差错的方法和装置。
发明内容
本发明由用于检测计算机系统内差错的计算机实施的进程实现,它包括以下步骤:在参照系统和测试系统上执行软件程序的指令序列,检测和记录程序执行中可比较点上参照系统与测试系统的状态,比较检测到的包括指令序列结束在内的指令序列中可选择的可比较点的参照系统与测试系统的状态。
在特定实施例中,如果检测到系统比较状态的差异,则自动回放参照系统与测试系统的可选择可比较点之间指令序列的执行部分。
通过以下结合附图对本发明的描述,可以进一步理解本发明的各种特征,附图中相同的单元采用相同的标号。
附图的简要说明
图1为按照本发明的系统框图。
图2为按照本发明的系统其中一个实施例的框图。
图3为按照本发明的过程的示意图。
实施发明的较佳方式
现在参见图1,它示出了按照本发明构造的装置的框图。本发明利用从程序12接受指令的控制机构10。它需要在测试系统15和不止一个参照系统16上利用输入/输出设备或模型18执行。程序12可以是硬件或软件程序或进程或它们的变例。测试和参照系统15和16可以是硬件、软件或它们的组合。控制机构10由测试系统15和参照系统16控制程序12的执行。程序12虽然在图中示出的是分立的实体,但是可以嵌入系统或者从系统外部提供。对于每种系统程序12可以有不同的表示,但是必须在某个层次上计算相同的结果。控制机构10可以是任意控制,它提供了以增量方式运行程序12并以增量方式读取或验证两种系统状态的装置。
从原理上讲,可以通过单步执行程序并比较每步的系统状态执行程序12。但是每步检查大量的状态常常在代价上望而却步。此外,简单的逐步执行或计也是不可能的。例如,某些结果在一个系统按照一种次序计算而在另一个系统按照另一次序计算。相反,本发明采用控制机构10在测试和参照系统中执行几个或许多步骤。因此控制机构可以在测试系统15上执行程序12的已知大量的步骤并随后在参照系统16上重复执行这些步骤。随后可以进行状态比较。通过在比较之前执行一系列步骤,将比较成本摊销在几个步骤上,并且本发明可以找到系统内在每个步骤上未完成等同计算的差错。
控制机构10执行估计真伪的比较预测(估计表示)。比较预测无需嵌入控制机构10并且可以根据测试下的系统、所分析差错种类和差错定位的性能与精度之间的折衷而变化。此外,比较预测可以在执行期间改变。例如如果参照系统与测试系统都是处理器,则比较预测经常可以对两种处理器的用户可视寄存器的进行快速检查并且还可以周期性地进行更为昂贵但是更为全面的隐藏寄存器和存储器的检查。
值得指出的是,测试系统与参照系统可以包含比较中从来不用并且在比较中可忽略的状态。同样,每种系统可以用不同方式表示某些状态,因此为了完成比较,比较预测或其替代方式必须完成一些状态变换。为了发挥事件流调试的优势,“状态”记号可以包含事件日志状态。例如预测可以比较事件戳记输入/输出日志内的单元以确保两种系统的外部行为一致。最后,预测可以计算近似信息,例如一组值的校验和与循环冗余校验(CRC)而不是明显地比较所有的值。
控制程序10根据一系列的前提控制执行。首先将会看到的是,如果同一程序12被两种系统正确执行,则两种系统执行的各单条指令可以不同但是当两种系统功能正确地提供相同结果时它们的状态特定部分应有等同的点。在规程中这些点称为“虚拟时间内的可比较点”或者简单地称为“可比较点”。例如参照系统可以是与仿真器组合并用来仿真复杂处理器(例如CISC处理器)的简单处理器(例如RISC处理器),而测试系统可以是这种复杂处理器。参照系统一般执行几条指令以模拟测试系统单条指令的行为。因此参照系统的状态将仅仅在对应测试系统内被执行的整条指令处可以比较。
本发明也基于这样的认识,即在某种程度上,正确功能的计算机系统的操作具有确定性。因此当指令序列开始在处理器上运行时,这些指令的结果由初始机器状态确定,除非有指令序列以外外部的事件(例如中断和输入/输出操作)出现。只有这些外部操作可能引起程序在系统上执行的方式的变化。为了消除某些实施例中的这种变化,单组设备模型的行为由参照系统和测试系统共享。这简化了状态比较的种类。其它的好处是与两种系统采用不同的设备相比,采用单组设备的调试速度快得多。本发明从设备模型18提取外部事件并在测试与参照系统之间共享。控制机构10确保外部事件在同一可比较的虚拟时间点上提供给测试与参照系统,从而使外部时间具有同样的效果。因此两种系统15和16从理论上讲在同样的外部事件下程序产生同样的结果。但是值得指出的是,在发生外部事件的两个可比较点之间可以有大量的可比较点。
在正确功能的计算机系统下,一旦指令序列在处理器上开始运行,则除了出现指令序列外部的事件和异步外部事件的消失以外,这些指令的结果都是确定的,这使得可以在两种系统执行程序期间的虚拟时间可比较点上进行比较。控制机构10周期性地比较参照系统与测试系统状态的某些部分。当系统状态部分在任意可比较点上变化时(按照比较预测这是不兼容的),则遇到差错(称为分散)。发散可能从上一次比较后的任意点上遇到。利用可比较点(在该点有足够的状态用来检测系统差错)检测发散与现有技术差错检测系统相比提供了明显的优点。
通过从表示等同状态的最后状态比较开始在虚拟时间上搜索,本发明还可以自动压缩差错范围。为此,程序执行在检测到状态偏离的最先可比较点处中止。由于可以记录和回放执行期间共享的外部事件,所以可以“返回较近的可比较点”并随后再向前执行并得到同样的结果。这使得可以“回放”已经执行并发生差错的程序部分。为了支持回放,控制机构10在系统执行程序期间在预选可比较点处周期性地检查或记录测试和参照系统的状态。系统操作随后可以返回更前面检测到偏差的检查点并且程序12向前执行到所需的可比较点。
检查点无需捕捉所有的系统状态,但是它应该提供足够的状态以重新启动执行。检查更多的状态将产生较佳的调试精度。检查点可以以任意周期(从无限长到每一步)完成;检查点间隔的改变影响了向前执行和回放的性能。回放还依赖于外部事件的日志。当重新启动执行进行回放时,外部事件从日志中提取以确保回放的决定性性态。
许多搜索技术都是可行的;最好的选择是根据向前执行与回放的相对速度、状态比较等而改变。而且当检测到差错时,控制机构10可以切换到利用更全面或更精确的状态比较预测。在一个实施例中,控制机构10可以在虚拟时间内完成如下所述的二分法搜索。控制机构10可以将回放开始设定在状态比较成功的前一可比较点处,它可能是最严格意义上的最近比较。在发生外部事件的任意两个可比较点之间存在的大量可比较点使得在检测到偏离之后比较精确地隔离差错。控制机构10可以将回放结束设定在发生失效状态比较的可比较点处并随后使程序回放执行至开始与结束之间一半的中间可比较点。随后在该一半点处再次比较系统状态。如果状态比较在一半点处失败,则回放结束被设定在中间可比较点处并且继续搜索,此时回放开始于相同的开始点并且继续至开始与新结束点之间一半的第二中间可比较点处。系统状态随后在一半点处再次比较。如果继续状态比较,开始被设定在中间可比较点处并且继续搜索。这样,差错搜索的范围迅速缩小。
终止搜索的情况有多种。例如控制机构10可以在搜索范围小至不能进一步减小时终止发散搜索。此时该发散被视为“找到”。最小的范围取决于测试和参照系统并且取决于执行的程序。差错可以向用户报告。
控制机构10通过向测试系统和参照系统提供相同的外部事件将系统与异步外部事件隔离,这样做除了可以确保一致性并提供程序12的回放执行以外还具有一系列的优点。例如,控制机构10可以在程序12执行的任意片段上选择性地改变速率和外部事件分布。这使得控制机构10可以生成测试情景,例如不同寻常的外部事件出现率。
控制机构10可以通过重复提供成功状态比较的执行片段完成“微扰分析”。每次重复执行时,可以改变外部事件初始状态或者传递,但是最终执行的结果应该不发生改变。如果最终状态随运行而改变,则检测到差错;上述差错隔离技术可以用来通过与参照系统的比较及时缩小差错位置。例如,程序12的关键部分可以运行几次;并且控制机构10每次可以在不同的序列指令处传递中断或改变测试或参照系统内高速缓存的初始内容。
本发明适于复杂程度不同的系统的功能。例如,测试系统利用寄存器更名或类似技术改进性能。在一个系统中某些数据可以在硬件或软件高速缓存内而在另一系统中在基本存储器内,或者在一个系统内隐含表示(为了实现状态比较,需要对问题中的数据重构)。为了比较状态,比较预测在参照系统和测试系统内调用代用者以通过名字而非位置比较状态。
本发明有许多实施例。在一个实施例中,参照系统16是直接译码-调度解释器而测试系统利用虚拟机代码至本地机代码的动态编译执行同样的输入程序。为了保持虚拟时间中的可比较点,参照系统对每条提取的指令增量虚拟时间,而测试系统利用插入每个动态编译块内的指令代码增量虚拟时间。比较预测只比较每个系统执行的虚拟机器的状态。
图2示出了本发明一个特别有用的实施例,它利用从程序12接受指令的软件控制程序20,它需要经调试器程序14在两个不同的系统上执行。调试器程序14可以选择为任何适于提供以增量方式运行程序12并且运行该程序的系统状态可以任何增量被测试。控制程序20在执行程序12中控制参照系统16与测试系统15的操作。
在本发明的该实施例中,测试系统15仿真执行翻译程序13的处理器,翻译程序将程序12的指令动态翻译为处理器能够完成程序12指令结果的指令系列。在利用调试器14执行程序12时,控制程序20使系统16执行程序12已知和大量的原始指令并随后利用系统15重复执行这些指令。
控制程序20控制两个系统15和16的整个执行。在图2中,示出了实现本发明的装置,调试器软件14从程序12接收指令序列,程序已知可以运行在诸如利用Intel X86微处理器的特定计算机系统上。按照本发明设计的控制程序20向调试器软件14提供了典型的计算机系统接口并且控制作用于测试和参照系统15和16的指令。控制程序20向调试器软件14提供与系统15和16向控制程序20提供的一样的接口。控制程序20还将其自身插入在系统15和16与它们的设备18之间以提供外部时间的日志和回放。
有许多方法维持虚拟时间的可比较点。在一个实施例中,程序12由翻译程序13翻译为属于测试系统15执行指令集的指令。包含微处理器与该翻译程序13的测试系统15被设计为执行原先针对参照系统16定义的微处理器执行的指令集的程序。为了能确定原始程序12与翻译程序13翻译的指令一致的状态虚拟时间可比较点,翻译程序13将翻译中的点映射到与程序12每条指令结束处一致并且指明为可比较点,该可比较点被用于比较两个仿真模型15和16。控制程序20在确定系统15和16在何处和何时开始与停止执行指令序列中查找这些可比较点。
除了利用这种时域映射以外,控制程序20提供的装置在两个系统15和16的程序12执行中的可比较点处检测两个仿真模型15和16的地址空间的映射。例如,一个或其它系统可以利用寄存器更名或类似技术加速处理。为了利用两个系统15和16测试状态一致性,必须确定实际上保存应该一致的数据的寄存器。同样,存储器数据可以存储在一个系统内的处理器高速缓存内,并不存储在存储器内,而在另一系统中同一数据可以存储在主存储器内。正确的存储器必须进行比较以获得有用的结果。在一个实施例中,控制程序20在借助抽象寄存器或存储器名字的控制下查询系统。在测试和参照系统内的查询利用从抽象名字到存储位置的映射提供所需的数据。
一旦提供了这两种映射,来自程序12的选定指令序列由调试器软件14配备以控制程序20的执行。调试器软件14一般能够按照用户确定的顺序执行程序并确定选定时刻的执行模型状态,但是不能完成在一个系统上或另一个系统上程序执行之间的比较。调试器软件14向控制程序20提供指令序列。控制程序20向运行指令序列的参照系统16提供指令序列。控制程序20在开始执行系统16上序列之前记录序列开始时的系统16的状态。当指令序列在系统上执行时,控制程序20记录和赋予每个外部事件的时间戳记。因此控制程序20记录每个输入/输出操作(包括命令、地址和传送至任何仿真输入/输出设备18的数据)并记录从仿真设备18返回给系统16的响应。控制程序还记录系统16在序列期间响应的每次意外事件。
接着控制程序20在测试系统15执行同一指令序列至结束序列的可比较点。在执行指令序列中,为参照系统16记录的外部操作(输入/输出或意外事件)从取自系统16序列执行的结果日志中加以利用。因此,如果系统16导致发生输入/输出操作,则外部生成的来自该操作的返回提供给系统15。这样,返回值与提供给系统16的值相同,从而使得测试系统15内的结果应该与系统16内的一致。同样,如果系统接收中断,中断由控制程序20记录并且随后提供给测试系统15从而在测试系统15正确时其响应应该与参照系统16的响应一致。利用在系统16执行程序12时登录的外部事件省去了仿真设备的工作,它将在第二模型下正确工作,确保影响仿真的外部事件是一致的,由此避免了程序执行因异步外部事件而变化。
序列以这种方式在系统15上完成。随后,比较两种系统的状态。如果两种系统的状态在序列结束处一致,则程序12的第二指令序列提供给调试器14以在两种系统15和16上执行。
如果来自程序12的任何指令序列在测试和参照系统中执行时在可比较点上产生不同的状态,则程序12从执行中的前一产生的等同状态的可比较点处回放。在上述特定实施例中,进程以上述方式以二分法搜索模式返回。在回放下一指令序列执行中,利用参照系统在执行期间记录的外部事件日志消除两种系统执行期间外部事件的变化。如果指令的前半部分在中间可比较点上产生相同的状态,则为测试和参照系统回放指令序列的第二部分的前半部分。这种序列的二分法测试部分继续下去从而迅速隔离两种仿真的发散点。
将会看到的是,执行指令序列中差错的二分法测试快速地将差错点隔离。隔离差错的搜索没有必要是二分法搜索。例如,如果执行程序比返回执行程序以寻找最近的状态一致可比较点在时间上更节省,则回放程序的较小部分可以更快并减少为隔离差错而反向执行程序所需的次数。在任何情况下,在操作器或控制程序的控制下以并行方式在两种模型上运行较长的指令(指令长度可以变化)可以快速而准确地调试从属仿真模型而无需象现有技术那样所需的繁琐的逐步过程。
虽然按照较佳实施例描述了本发明,但是对于本领域内技术人员来说可以在不偏离本发明精神与范围的前提下作出各种修改和改动。本发明应该由下列权利要求限定。

Claims (23)

1.一种校正计算机系统内差错的系统,其特征在于包含:
有待校正差错的测试系统;
参照系统;以及
控制机构,用于在参照系统与测试系统上执行程序,所述控制机构包括:
在参照系统与测试系统上执行程序指令序列的装置;
在程序执行过程中在可比较点上检测与记录参照系统与测试系统状态的装置;以及
在包括指令序列结束在内的指令序列中比较可选比较点上参照系统与测试系统的状态的装置。
2.如权利要求1所述的系统,其特征在于进一步包括回放装置,如果检测到系统比较状态有差异,则回放参照系统与测试系统指令序列可选比较点之间的执行部分。
3.如权利要求2所述的系统,其特征在于如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的回放装置响应比较状态差异的检测以重新设定待回放指令序列部分。
4.如权利要求3所述的系统,其特征在于如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的回放装置在最近一次测试系统与参照系统状态比较正确的可比较点与检测到比较状态差异的可比较点之间进行搜索。
5.如权利要求4所述的系统,其特征在于执行的搜索是二分法搜索。
6.如权利要求1所述的系统,其特征在于控制机构进一步包含:
向参照系统提供外部事件的装置;
记录由向参照系统提供外部事件的装置提供的外部事件的装置;以及
将所记录的参照系统外部事件用作测试系统指令序列执行中的外部事件的装置。
7.如权利要求6所述的系统,其特征在于控制机构包含改变外部事件和改变提供外部事件的可比较点的装置。
8.如权利要求2所述的系统,其特征在于控制机构进一步包含:
向参照系统提供外部事件的装置;
记录由向参照系统提供外部事件的装置提供的外部事件的装置;以及
将所记录的参照系统外部事件用作参照系统和测试系统回放指令序列执行中的外部事件的装置。
9.如权利要求1所述的系统,其特征在于在程序执行过程中在可比较点上检测与记录参照系统与测试系统状态的装置检测和记录代表参照系统与测试系统状态的代用值。
10.如权利要求1所述的系统,其特征在于所述控制机构包括在改变外部事件施加时回放参照系统与测试系统指令序列可选比较点之间的执行部分。
11.如权利要求1所述的系统,其特征在于在包括指令序列结束在内的指令序列中比较可选比较点上参照系统与测试系统的被检测的状态的装置能够选择不同的状态。
12.一种用于检测计算机系统内差错的方法,其特征在于包含以下步骤:
在参照系统与测试系统上执行软件程序的指令序列;
在程序执行过程中在可比较点上检测与记录参照系统与测试系统的状态;以及
在包括指令序列结束在内的指令序列中比较可选比较点上参照系统与测试系统的被检测状态。
13.如权利要求12所述的方法,其特征在于进一步包括,如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的步骤。
14.如权利要求12所述的方法,其特征在于,如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的步骤,以响应比较状态差异的检测。
15.如权利要求13所述的方法,其特征在于,如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的步骤包括:在最近一次测试系统与参照系统状态比较正确的可比较点与检测到比较状态差异的可比较点之间进行搜索。
16.如权利要求13所述的方法,其特征在于,如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的步骤包括:在最近一次测试系统与参照系统状态比较正确的可比较点与检测到比较状态差异的可比较点之间进行二分法搜索。
17.如权利要求13所述的方法,其特征在于,如果检测到系统比较状态有差异则回放参照系统与测试系统指令序列可选比较点之间的执行部分的步骤包括:在最近一次测试系统与参照系统状态比较正确的可比较点与检测到比较状态差异的可比较点之间进行二分法搜索,选择搜索技术以提高搜索速度。
18.如权利要求12所述的方法,其特征在于,在程序执行过程中在可比较点上检测与记录参照系统与测试系统状态的步骤包括:检测和记录代表参照系统与测试系统状态的代用值。
19.如权利要求12所述的方法,其特征在于,进一步包含以下步骤:
向参照系统提供外部事件;
记录由向参照系统提供外部事件的装置提供的外部事件;以及
将所记录的参照系统外部事件用作测试系统指令序列执行中的外部事件。
20.如权利要求19所述的方法,其特征在于,进一步包含改变外部事件和改变提供外部事件的可比较点的步骤。
21.如权利要求13所述的方法,其特征在于进一步包含以下步骤:
向参照系统提供外部事件;
记录向参照系统提供的外部事件;以及
将所记录的参照系统外部事件用作参照系统和测试系统回放指令序列执行中的外部事件。
22.如权利要求13所述的方法,其特征在于,回放参照系统与测试系统指令序列可选比较点之间的执行部分的步骤:包括改变外部事件的施加。
23.如权利要求12所述的方法,其特征在于,在包括指令序列结束在内的指令序列中比较可选比较点上参照系统与测试系统的被检测的状态的步骤:包括选择要比较的状态。
CNB988027836A 1997-02-28 1998-02-13 纠正计算机系统内错误的方法和装置 Expired - Lifetime CN1229726C (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN1252875A CN1252875A (zh) 2000-05-10
CN1229726C true CN1229726C (zh) 2005-11-30

Family

ID=25196627

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB988027836A Expired - Lifetime CN1229726C (zh) 1997-02-28 1998-02-13 纠正计算机系统内错误的方法和装置

Country Status (9)

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

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
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
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
US6763452B1 (en) 1999-01-28 2004-07-13 Ati International Srl Modifying program execution based on profiling
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
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
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
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
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
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
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
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
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
US7797684B2 (en) * 2005-11-04 2010-09-14 Oracle America, Inc. Automatic failure analysis of code development options
US8136101B2 (en) * 2005-11-04 2012-03-13 Oracle America, Inc. Threshold search failure analysis
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
US7478226B1 (en) 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking system and method
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
JPWO2008053723A1 (ja) * 2006-11-02 2010-02-25 日本電気株式会社 半導体集積回路および演算装置の故障検出方法
US8301936B2 (en) * 2006-11-02 2012-10-30 Nec Corporation Apparatus and method for performing a screening test of semiconductor integrated circuits
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 日本電信電話株式会社 設定内容照合装置
CA2655507A1 (en) * 2008-02-22 2009-08-22 Pmt Pig Manure Treatment Limited 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
US10042737B2 (en) * 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program 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
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
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
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
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
DE69028517D1 (de) * 1990-05-11 1996-10-17 Ibm Verfahren und Gerät zur Ableitung des Zustandes einer gespiegelten Einheit bei Reinitialisierung eines Systems
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
KR20000075835A (ko) 2000-12-26
DE69831732T2 (de) 2006-06-29
CA2276494A1 (en) 1998-09-03
CN1252875A (zh) 2000-05-10
CA2276494C (en) 2004-05-04
WO1998038575A1 (en) 1998-09-03
JP3654910B2 (ja) 2005-06-02
US5905855A (en) 1999-05-18
EP0961972A1 (en) 1999-12-08
JP2001519939A (ja) 2001-10-23
EP0961972B1 (en) 2005-09-28
KR100463809B1 (ko) 2004-12-29
DE69831732D1 (de) 2006-02-09
ATE305633T1 (de) 2005-10-15
EP0961972A4 (en) 2002-12-04

Similar Documents

Publication Publication Date Title
CN1229726C (zh) 纠正计算机系统内错误的方法和装置
JP7202293B2 (ja) 垂直統合インストルメント化およびトレース再構成のためのシステム、方法およびデバイス
Dang et al. The R-LRPD test: Speculative parallelization of partially parallel loops
JP4766540B2 (ja) プログラムコード変換の検証を実行するための方法および装置
US7849450B1 (en) Devices, methods and computer program products for reverse execution of a simulation
US4794522A (en) Method for detecting modified object code in an emulator
US20120011491A1 (en) Efficient recording and replaying of the execution path of a computer program
US20050028146A1 (en) Systems and methods for software and firmware testing using checkpoint signatures
RU2451990C2 (ru) Способ обработки объема данных, используемого во время фазы отладки функционального программного обеспечения системы, установленной на борту летательного аппарата, и устройство для его осуществления
US6415436B1 (en) Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
CN102520984B (zh) 目标软件在指定硬件环境中最差时间的计算方法
Narayanasamy et al. Bugnet: Recording application-level execution for deterministic replay debugging
Kooli et al. Cache-and register-aware system reliability evaluation based on data lifetime analysis
Mittal et al. Integrating sampling approach with full system simulation: Bringing together the best of both
US20040054515A1 (en) Methods and systems for modeling the performance of a processor
Senthilkumaran et al. Insight: A framework for application diagnosis using virtual machine record and replay
US11341023B2 (en) Apparatus, method, and non-transitory computer-readable medium for analyzing trace information
Werner Assessment of virtual machine working-sets in SimuBoost
Bansal Exploring Optimization Opportunities in Non-Volatile Memory Systems
Phillips Enhanced debugging with traces
Terrosi et al. Modeling of GPGPU architectures for performance analysis of CUDA programs
Hsu et al. A Highly Scalable, Hybrid, Cross-Platform Timing Analysis Framework Providing Accurate Differential Throughput Estimation via Instruction-Level Tracing
Topham et al. Adaptive high-speed processor simulation
Gao Reducing time and space costs of memory tracing
Pflasterer et al. Computer emulator applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: TRANSMITAR CO., LTD

Free format text: FORMER OWNER: TRANSMITAR CO., LTD.

Effective date: 20091113

Owner name: KNOWLEDGE VENTURE CAPITAL ROMPLAST-14 O., LTD

Free format text: FORMER OWNER: TRANSMITAR CO., LTD

Effective date: 20091113

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20091113

Address after: Nevada

Patentee after: TRANSMETA Corp.

Address before: California, USA

Patentee before: Full simeida LLC

Effective date of registration: 20091113

Address after: California, USA

Patentee after: Full simeida LLC

Address before: California, USA

Patentee before: Transmeta Corp.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20051130