KR100463809B1 - 컴퓨터 시스템에서 에러를 보정하기 위한 방법과 장치 - Google Patents

컴퓨터 시스템에서 에러를 보정하기 위한 방법과 장치 Download PDF

Info

Publication number
KR100463809B1
KR100463809B1 KR10-1999-7007910A KR19997007910A KR100463809B1 KR 100463809 B1 KR100463809 B1 KR 100463809B1 KR 19997007910 A KR19997007910 A KR 19997007910A KR 100463809 B1 KR100463809 B1 KR 100463809B1
Authority
KR
South Korea
Prior art keywords
reference system
test system
state
execution
test
Prior art date
Application number
KR10-1999-7007910A
Other languages
English (en)
Other versions
KR20000075835A (ko
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 KR20000075835A publication Critical patent/KR20000075835A/ko
Application granted granted Critical
Publication of KR100463809B1 publication Critical patent/KR100463809B1/ko

Links

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

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)

Abstract

기준 시스템(16)과 시험 시스템(15) 각각에 대한 소프트웨어 프로그램(12) 명령어 시퀀스를 실행하고, 프로그램(12) 실행시 동등한 점들에서 기준 시스템(16)과 시험 시스템(15)의 상태를 검출 및 기록하며, 명령어 시퀀스 끝을 포함하는 명령어 시퀀스의 선택가능한 동등한 점들에서 기준 시스템(16)과 시험 시스템(15)의 검출된 상태를 비교하는 단계를 포함하는 컴퓨터 시스템의 에러를 검출하는 컴퓨터 실행 과정. 특별한 실시예에서, 기준 시스템(16)과 시험 시스템(15) 각각에 대한 선택가능한 동등한 점들 사이의 명령어 시퀀스의 일부 실행은 시스템 상태 비교시 차이점이 검출되는 경우 자동으로 재연된다.

Description

컴퓨터 시스템에서 에러를 보정하기 위한 방법과 장치{METHOD AND APPARATUS FOR CORRECTING ERRORS IN COMPUTER SYSTEMS}
발명의 배경
발명의 분야
본 발명은 컴퓨터 시스템에 관한 것으로, 특히 컴퓨터 시스템을 빠르고 정확하게 디버깅(debugging)하기 위한 시스템에 관한 것이다.
종래 기술의 역사
컴퓨터 프로세스나 컴퓨터 시스템에서 에러를 탐지하는 일은 종종 바람직하다. 이를 달성하기 위해서, 디자인된 시험 대상의 시스템("시험 시스템")의 동작을 정상적으로 동작하는 시스템("기준 시스템") 모델에 대하여 테스트를 행한다. 시험 시스템 및 기준 시스템의 동작들이 일치하는 경우, 시험 시스템의 기능은 정상인 것으로 추정된다. 시스템들의 행동이 다른 경우, 에러가 탐지된다.
양쪽 시스템들의 동작을 비교하는 데에는 많은 방법이 있다. 한가지 방법은 각 시스템으로 하여금 절차 호출, 상태 천이, 또는 버스 신호와 같은 내부 또는 외부 사건들의 스트림을 생성하게 하여, 이들 양자의 스트림을 비교하는 것이다. 그러나, 몇몇 사건 스트림들(event streams)은 캡쳐(capture)하기가 곤란하여 사건 스트림들의 비교를 실행할 수 없다. 다른 사건 스트림들은 너무 비싸서 캡쳐 할 수 없다. 또, 다른 사건 스트림들은 너무 조잡하여 에러들을 유용하게 국소화(localization)시킬 수 없다. 몇몇 사건 스트림들에서, 사건들은 시스템들의 구현들에 너무 의존하므로 비교할 수 없다.
다른 비교 기술은 양 시스템을 가동하여 시스템들이 가동하는 동안 상태를 기록한 다음, 그 상태를 비교하는 것이다. 상태 비교는 사건 스트림들의 비교시 나타나는 동일한 문제를 겪게 될 것이다. 몇몇 상태는 비싸거나 접근이 불가능하거나 또는 이들 양 시스템들의 구현사항들에 너무 의존하게 될 것이다.
상태나 사건들을 비교하기 위해 다른 방법들이 사용될 수 있다. 전통적으로, 기준 시스템은 비공식적이거나 실행할 수 없는 경우에서의 방법은 기준에 의해 생성된 상태 또는 사건들과 일치하지 않는 여러 시험 상태 또는 사건들에 대한 특별 검색이다. 물론, 이 방법은 시험 시스템에 존재하는 중요한 문제들을 놓칠 수 있는 가능성이 있다.
상기 기준이 실행가능한 사양인 경우, 단지 양 시스템을 동시에 동작시켜, 어느 순간에 상태를 비교하여 그 차이점을 탐지하는 것이 바람직하다. 전술된 문제들은 이것을 더욱 어렵게 만든다.
각 단계 후에 시스템 상태를 정확하게 비교하는 것은 일반적으로 불가능하다. 첫째로, 시험 시스템 및 기준 시스템은 (기능, 실행, 또는 성능과 같은) 어떤 방식에 있어서 당연히 다르므로, 시스템들의 전체 상태는 항상 비교될 수 없다. 몇몇 시스템 경우에, 전체 상태는 결코 비교될 수 없다. 예를 들면, 제1 운영체제를 가동시키는 프로세서의 한 유형으로부터 제2 운영체제를 가동시키는 다른 유형으로 응용 프로그램을 포트(port)할 때 처럼, 기준 시스템과 전혀 다른 시험 시스템의 상태를 비교하는 것이 때때로 바람직하다. 필요한 것은 시험 시스템이 기준 시스템과 동일한 최종 결과를 제공해야 한다는 것이다. 프로세서들과 운영 체제들은 다르기 때문에, 양 시스템을 가동시키는 어느 순간에 수행되는 동작들(따라서, 그 상태들)은 아마도 다르게 될 것이다.
두번째로, 각 시스템이 각 동작을 수행한 후의 상태를 반복적으로 비교하는 것은 엄청나게 비용이 든다. 양 시스템의 상태를 비교하기 위해서, 양 시스템들의 모든 (제2 레벨의 저장을 포함하는) 메모리와 모든 레지스터들은 그들이 동일한 지를 알기 위해 비교되야 한다. 이러한 순전한 레벨의 상태 비교 역시 비용이 많이 들게 한다.
마지막으로, 어떤 상태 정보 예컨대 판독할 수 없는 프로세서 레지스터의 상태 또는 시스템들중 하나에 함축적으로 나타내어진 상태는 이용할 수 없다. 그러므로, 종종 비교는 선택적이어야 한다.
실행 동안 모든 점들에서 상태를 비교하는 것은 어렵지만은, 시험 시스템과 기준 시스템의 결과들이 동일한 점들을 선택하는 것은 가능하다. 이 점들에서, 상태 비교가 취해진다. 그러나, 지금까지 시스템을 비교하기 위해 자동화되거나 빠른 방법이 전혀 고안되지 않았다.
시험 시스템에서 에러를 빨리 탐지하기 위한 방법과 장비를 제공하는 것이 바람직하다.
특히, 컴퓨터 프로세스나 컴퓨터 시스템의 에러를 탐지하기 위한 방법과 장치를 제공하는 것은 바람직하다.
[발명의 요약]
본 발명은 컴퓨터 시스템의 에러를 탐지하기 위해 기준 시스템과 시험 시스템에 각각에서의 소프트웨어 프로그램의 명령어 시퀀스를 실행하고, 프로그램 실행시 동등한 점들에서 기준 시스템과 시험 시스템의 상태를 탐지 및 기록하며, 명령어 시퀀스의 끝을 비롯한 명령어 시퀀스의 선택가능한 동등한 점들에서 기준 시스템과 시험 시스템의 탐지된 상태를 비교하는 단계들을 포함하여 구성되는 컴퓨터 실행 프로세스에 의해 실현된다.
특별한 실시예에서, 기준 시스템과 시험 시스템 각각에서 선택가능한 비교가능한 점들 사이에서 명령어 시퀀스 부분들의 실행은, 이들 시스템의 상태 비교시 차이점이 탐지될 경우 자동으로 재연된다.
본 발명의 이러한 특성과 다른 특성들은 도면을 참조하여 상세한 설명으로부터 더욱 명백해질 것이며, 일부 도면에서 동일 구성요소들은 동일 도면 부호로 표기하였다.
도 1은 본 발명에 따라 설계된 시스템의 블록선도이다.
도 2는 본 발명에 따라 설계된 시스템의 한 실시예를 도시한 블록선도이다.
도 3은 본 발명을 따르는 프로세스를 설명하는 도면이다.
도 1은 본 발명에 따라 구성된 장치의 블록선도이다. 본 발명은 시험 시스템(15)상에서의 실행이 요구되는 프로그램(12)으로부터 명령어를 수신하는 제어 메커니즘(10)과, 그리고 입력/출력 디바이스 모델(18)을 이용하는 하나 이상의 기준 시스템(16)을 이용한다. 프로그램(12)은 하드웨어 또는 소프트웨어 프로그램으로 되거나 혹은 이들 프로그램의 프로세스 또는 어떤 변형으로 될 수 있다. 시험 시스템(15)과 기준 시스템(16)은 각각 하드웨어, 소프트웨어, 또는 이들 각각의 어떤 조합으로 될 수 있다. 제어 메커 니즘(10)은 시험 시스템(15)과 기준 시스템(16) 양자에 의한 프로그램(12) 실행을 제어한다. 프로그램(12)은, 비록 도면에서는 개별적인 실체로서 도시하였지만은, 시스템 내에 삽입(embedded)되거나 또는 시스템 외부로부터 공급될 수 있다. 프로그램(12)은 이들 시스템 각각에 대해 서로 다른 표현을 갖지만, 어떤 레벨에서는 동일한 결과를 계산해야 한다. 제어 메커니즘(10)은 증분(increments) 방식으로 프로그램(12)을 가동하고, 그리고 양 시스템의 상태를 증분 방식으로 판독 또는 검증하기 위한 수단을 제공하는 어떤 제어 방식일 수 있다.
원칙적으로, 단일 단계에서 프로그램을 실행하고, 각 단계에서 시스템들의 상태를 비교하여 프로그램(12)을 실행할 수 있을 것이다. 그러나, 모든 단계에서 많은 양의 상태를 검사하는 것은 엄청난 비용이 들 것이다. 게다가, 간단히 단계화하는 것은 가능하지 않다. 예컨대, 일부 결과들은 어느 한 시스템에 의해 어느 한 순서로 계산되며, 다른 시스템에서는 다른 순서로 계산될 것이다. 대신에, 본 발명은 제어 메커니즘(10)을 이용하여 시험 시스템과 기준 시스템에서 일부 또는 많은 단계들을 실행한다. 따라서, 본 제어 메커니즘은 시험 시스템(16)상에서 프로그램(12)의 알려진 및 종종 많은 수의 단계들을 실행한 다음, 기준 시스템(16)상에서 그 단계들의 실행을 반복한다. 그 다음, 상태 비교가 실행된다. 비교를 행하기 전에 많은 단계를 실행함으로써, 여러 단계에 대해 비교 비용이 상각되며, 본 발명은 또한 각 단계에서 동일한 계산을 수행하지 못하는 시스템 에러를 찾을 수 있다.
제어 메커니즘(10)은 참(true) 또는 거짓으로 평가하는 비교 술부(comparison predicate)(평가될 표현)를 실행한다. 비교 술부는 제어부(10)에 삽입될 필요가 없으며, 시험되는 시스템들, 분석되는 에러의 종류, 그리고 에러 국소화의 실행과 정밀도 사이의 트레이드오프(tradeoff)에 따라 변할 것이다. 게다가, 비교 술부는 실행 동안 변할 것이다. 예를 들면, 기준 시스템과 시험 시스템 양자가 프로세서일 경우, 비교 술부는 종종 양자 프로세서의 (사용자가 볼 수 있는) 레지스터에 대한 신속한 검사를 수행하며, 또한 숨겨진 레지스터와 메모리에 대한 비록 비싸지만은 보다 포괄적인 검사를 주기적으로 수행한다.
주목할 사항으로, 각 시험 시스템과 기준 시스템 각각은 결코 비교에 이용될 수 없으며, 따라서 비교시에 무시되는 상태를 갖는다. 마찬가지로, 각 시스템은 서로 다른 방식으로 어떤 상태를 나타내어, 비교 술부 또는 이것의 대용(surrogate)은 그 비교를 수행하기 위해서 어떤 상태 변환을 수행해야 한다. 사건 스트림 디버깅을 이용하기 위해서, "상태" 개념이 사건 로그(log)의 상태를 포함하도록 확장된다. 예컨대, 양쪽 시스템의 외부적 동작이 동일하게 하기 위해서, 술부는 시간 날인된(time stamped) 입력/출력 로그의 성분들을 비교한다. 마지막으로, 술부는 대략적인 정보, 예컨대 모든 값들을 명백하게 비교하지 않고, 일련의 값들의 첵크섬(checksum) 및 순환 여유 검사(CRC)를 계산한다.
제어 프로그램(10)은 다수의 전제(premise)에 기초하여 실행을 제어한다. 처음에, 동일한 프로그램(12)이 양자의 시스템에 의해 올바로 실행되는지가 인식될 것이며, 그 다음 양자의 시스템에 의해 실행되는 개별적인 명령어들은 서로 다르지만, 시험 시스템과 기준 시스템이 각각 동일한 결과를 제공하도록 올바로 기능을 하는 경우 이들 양자의 시스템 상태의 특정 부분들이 등가이어야만 하는 점들이 존재한다. 이 점들은 본 명세서에서 "가상 시간에서 동등한 점들" 또는 간단히 "동등한 점들"로 언급된다. 예컨대, 기준 시스템은 시뮬레이터와 결합되며, 복잡한 (CISC 프로세서와 같은)프로세서를 에뮬레이트하는데 이용되는 단순한 (RISC 프로세서와 같은)프로세서인 반면에, 시험 시스템은 매우 복잡한 프로세서일 수 있다. 기준 시스템은 전형적으로 시험 시스템의 단일 명령어의 행동을 에물레이트하기 위해 여러 명령어들을 실행할 것이다. 결과적으로, 기준 시스템의 상태가 시험 시스템에서 실행되는 전체 명령어들에 대응할 시에만 동등할 것이다.
본 발명은 또한 소정의 레벨에서 올바로 기능을 수행하는 컴퓨터 시스템들의 동작들은 결정적인 동작이라는 인식에 기초한다. 따라서, 명령어 시퀀스가 프로세서 가동을 시작할 시, 이 명령어들의 결과는 인터럽트 (interrupt)와 입력/출력 동작들과 같은 명령어 시퀀스에 대한 외부 사건들을 제외하고는 초기 머신 상태에 의해 결정된다. 단지 이 외부 동작들만이 프로그램이 시스템상에서 실행하는 방식으로 변화를 야기할 수 있다. 어떤 실시예에서 이러한 변화를 제거하기 위해서, 단일 세트의 디바이스 모델들의 동작은 기준 시스템과 시험 시스템에 의해 공유된다. 이것은 다양한 상태 비교 문제들(issues)을 간략화한다. 부가적인 이점은, 디버깅이 양쪽 시스템들에 대한 개별적인 디바이스들의 경우에서 보다도 단일 세트의 디바이스들의 경우에서 훨씬 빠르다는 것이다. 본 발명은 디바이스 모델(18)로부터 외부 사건들을 취하여, 시험 시스템과 기준 시스템들 사이에서 이 사건들을 공유한다. 제어 메커니즘(10)은 외부 사건들이 가상의 시간에 동일한 동등한 점들에서 시험 시스템과 기준 시스템에 제공되어, 외부 사건들이 동일한 효과를 갖게 한다. 결과적으로, 양자의 시스템 (15, 16)은 이론적으로 프로그램을 실행하여, 동일한 외부 사건들을 가지고 동일한 결과를 생성한다. 그러나, 많은 수의 동등한 점들은 외부 사건들이 발생하는 어떤 2개의 동등한 점들 사이에 존재할 수 있음이 인식되어야 할 것이다.
올바로 기능을 하는 컴퓨터 시스템에서, 명령어들의 시퀀스가 프로세서 상에서 가동하기 시작하면, 명령어들의 시퀀스에 대한 외부 사건들과 그리고 비동기 외부 사건들의 제거를 제외하고는 이 명령어들의 결과가 결정된다는 인식은 이들 양자의 시스템에 의한 프로그램 실행 동안 가상 시간에 동등한 점들에서 비교를 허용한다. 제어 메커니즘(10)은 기준 시스템과 시험 시스템 상태의 어떤 일부를 주기적으로 비교한다. 시스템 상태의 일부가 소정의 동등한 점에서 변할 때(비교 술부에 따라 양립할 수 없을 때), (발산이라 불리는) 에러에 직면하게 된다. 발산은 최종 상태 비교 이후로 소정의 점에서 발생된다. 시스템 에러를 검출하기 위해 충분한 상태가 타당하게 이용가능하게 되는 동등한 점들을 이용한 발산 검출은 종래 기술의 에러 검출 시스템에 대해 상당한 진보를 제공한다.
본 발명은 동일한 상태를 나타냈던 마지막 상태 비교 이후로 가상 시간에 걸쳐 검색을 행함으로써 에러 범위를 자동적으로 줄일 수 있다. 이것을 성취하기 위해서, 상태 변화가 탐지되는 가장 초기의 동등한 점에서 프로그램 실행이 중단된다. 실행 및 재연 동안 공유되는 외부 사건들을 기록 및 재연할 수 있기 때문에, "가장 빠른 동등한 점으로 복귀"한 다음, 다시 실행하여 동일한 결과를 얻을 수 있다. 이는, 실행되어 에러를 발생한 프로그램의 일부를 "재연"하게 한다. 재연을 돕기 위해서, 제어 메커니즘(10)은 시험 시스템 및 기준 시스템이 프로그램을 실행하는 동안 미리 결정된 동등한 점들에서 이들 시스템의 상태를 주기적으로 검사 및 기록한다. 변화가 탐지되어 프로그램(12)이 요망되는 동등한 점으로 순방향 실행될 시, 시스템 동작은 이전의 검사점으로 복귀된다. 검사점은 모든 시스템 상태를 캡쳐할 필요는 없지만, 실행을 다시 시작할 충분한 상태를 제공해야 한다. 상태를 더 검사함으로써 보다 양호한 디버깅 정밀도를 제공할 수 있다. 검사는 전혀 안하거나 혹은 모든 스텝에서 어떤 주기로 실행될 수 있는바, 검사 간격의 변경은 순방향 실행 및 재연을 수행함에 영향을 미친다. 또한 재연은 외부 사건의 로그에 의존한다. 재연을 위해 실행이 재개될 시, 재연에서의 결정적인 동작을 보장하기 위해 로그로부터 외부 사건들이 취해진다.
많은 검색 기술들이 가능한데, 최상의 선택은 순방향 실행과 재연, 상태 비교 등등의 상대 속도에 따라 변한다. 더욱이, 에러가 검출될 시, 제어 메커니즘(10)은 보다 포괄적이거나 정확한 상태 비교 술부를 이용하여 스위치한다. 하나의 실시예에서, 제어 메커니즘(10)은 다음과 같이 가상 시간에서 2진 검색을 수행한다. 제어 메커니즘(10)은 성공적인 상태 비교가 발생했던, 아마 가장 엄밀한 레벨에서의 마지막 비교인 이전의 동등한 점에 재연의 시작을 설정한다. 외부 사건들이 발생하는 2개의 어느 동등한 점들 사이에 존재하는 다수의 동등한 점들은 변화가 검출된 후에 에러에 대한 비교적 미세하게 그레인(grain)된 격리(isolation)를 가능하게 해준다. 제어 메커니즘(10)은 실패한 상태 비교가 발생된 동등한 점에 재연의 끝을 설정한 다음, 시작과 끝 사이의 중간인, 제 2 중간의 동등한 점에서 프로그램 재연 실행을 수행한다. 이어서, 시스템 상태가 이 중간 점에서 다시 비교된다. 그 상태 비교가 중간 점에서 실패하는 경우, 재연의 끝은 중간의 동등한 점에 설정되고, 동일한 시작점에서 재연 시작과 더불어 검색이 계속되어, 시작과 새로운 끝 점 사이의 중간에 있는 제2 중간의 동등한 점까지 계속된다. 이어서, 시스템들의 상태는 이 중간 점에서 다시 비교된다. 상태 비교가 성공적인 경우, 시작은 중간의 동등한 점에 설정되어 검색이 계속된다. 이러한 방식으로, 에러 검색이 빠르게 좁혀진다.
검색을 종결시킬 수 있는 여러 상황들이 있다. 예컨대, 제어 메커니즘(10)은 검색 범위가 너무 작아서 이 범위가 더이상 줄여질 수 없을 시 발산 검색을 종결할 수 있다. 이 점에서, 발산은 "발견됐다"고 간주된다. 가장 작은 범위는 시험 시스템과 기준 시스템 그리고 실행될 프로그램에 의존한다. 이 에러는 사용자에게 보고될 수 있다.
제어 메커니즘(10)이 동일한 외부 사건들을 시험 시스템과 기준 시스템 각각에 제공함으로서 비동기 외부 사건으로부터 시험 시스템과 기준 시스템을 격리시키는 방식은, 일관성을 보장하는 능력에 더하여 여러 이점들을 제공하며, 프로그램(12)의 재연 실행을 제공한다. 예컨대, 실행 프로그램(12)의 임의 세그먼트들에 대해, 제어 메커니즘(10)은 실행 프로그램(12)의 임의 세그먼트들에 대한 외부 사건들의 비율과 분포를 선택적으로 변경시킨다. 이것은 제어 메커니즘으로 하여금 외부 사건들에 대한 특별히 높은 도착율과 같은 시험 상황을 생성하게 해준다.
제어 메커니즘(10)은 성공적인 상태 비교를 제공했던 실행의 세그먼트를 반복함으로서 "동요 분석(perturbation analysis)"을 또한 수행한다. 실행이 반복될 때 마다, 실행의 최종 결과를 변경시키지 않는 식으로 외부 사건들의 초기 상태나 전달은 바뀔 수 있다. 가동시마다 최종 상태가 변하는 경우, 에러가 검출되며, 전술된 에러 격리 기술이 기준 시스템에 견주어 비교함으로서 에러 위치를 좁히는데 이용될 수 있다. 예컨대, 프로그램(12)의 중요한 부분은 여러번 가동되며, 그때마다 제어 메커니즘(10)은 시퀀스의 다른 명령어에 인터럽트를 전달하거나, 시험 시스템 또는 기준 시스템에서 캐쉬(cache)의 초기 내용을 변경시킨다.
본 발명은 서로 다른 레벨의 복잡성을 지닌 시스템들과 기능하는데 적합하다. 예컨대, 시험 시스템은 성능을 개선하기 위해 레지스터 이름변경이나 유사한 기술들을 이용할 것이다. 어떤 데이터는 한 시스템에서는 하드웨어나 소프트웨어 캐쉬에 있거나, 다른 시스템에서는 주메모리에 있거나, 또는 (상태 비교를 이루기 위해 문제 데이터의 재구성을 필요로 하는)어떤 시스템에서는 암시적으로 나타낼 수 있다. 상태를 비교하기 위해서, 비교 술부는 위치가 아닌 이름으로 상태를 비교하기 위해 기준 시스템과 시험 시스템의 대용을 요구한다.
본 발명의 많은 실시예들이 있다. 한 실시예에서, 기준 시스템(16)은 직접적인 디코드(decode) 및 디스패치(dispatch) 해석기인 반면에, 시험 시스템은 가상 머신 코드를 본래 머신 코드로의 동적인 컴파일링을 이용하는 동일한 입력 프로그램을 실행한다. 동등한 점들을 가상 시간에 유지하기 위해, 기준 시스템은 인출되는 각 명령어를 위해 가상 시간을 증분시키는 반면에, 시험 시스템은 각각의 동적으로 컴파일된 블록에 삽입된 도구(instrumentation) 코드를 이용하여 가상 시간을 증분시킨다. 비교 술부는 단지 각 시스템에 의해 실행되는 가상 머신에 대한 상태만을 비교한다.
도 2에 도시된 본 발명의 하나의 특히 유용한 실시예는 소프트웨어 제어 프로그램(20)을 이용하는데, 이 프로그램(20)은 디버거 프로그램(14)을 거쳐 2개의 서로 다른 시스템들상에서 실행하는 것이 요구되는 프로그램(12)으로부터 명령어들을 수신한다. 디버거 프로그램(14)은 어떤 수단을 제공하는데 적합한 어떤 유용한 프로그램으로서 선택되는바, 상기 수단에 의해 프로그램(12)은 증분 방식으로 가동될 수 있고, 이 프로그램을 가동하는 시스템 상태는 원하는 증분 방식으로 시험된다. 제어 프로그램(20)은 프로그램(12) 실행시에 기준 시스템(16)과 시험 시스템(15)의 동작을 제어한다.
본 발명의 이 실시예에서, 시험 시스템(15)은 변환 프로그램(13)을 실행하는 프로세서를 시뮬레이션하는데, 이 프로그램(13)은 프로그램(12)의 명령어들을 프로세서가 프로그램(12) 명령어들의 결과를 성취하기 위해서 실행할 수 있는 일련의 명령어들로 변환한다. 디버거(14)를 이용하여 프로그램(12)을 실행할 시에, 제어 프로그램(20)은 시스템(16)으로 하여금 프로그램(12)의 알려진 종종 많은 수의 원래의 명령어들을 실행시키게 한 다음, 시스템(15)을 이용하여 이들 명령어 실행을 반복한다.
제어 프로그램(20)은 이들 두 시스템(15, 16)에 의한 전체 실행을 제어한다. 본 발명을 실행하기 위한 장치를 설명하는 도 2에서, 디버거 소프트웨어(14)는 프로그램(12)으로부터 명령어 시퀀스를 수신하는데, 이 프로그램(12)은 인텔 X86 마이크로프로세서를 이용하는 컴퓨터와 같은 특별한 컴퓨터 시스템상에서 가동한다. 본 발명에 따라 설계된 제어 프로그램(20)은 디버거 소프트웨어(14)에 대한 통상적인 컴퓨터 시스템 인터페이스를 제공하며, 시험 시스템(15)과 기준 시스템(16)에 대한 명령어들의 적용을 제어한다. 제어 프로그램(20)은 시스템(15,16)을 제어 프로그램 (20)에 제공하는 것과 같이 동일한 인터페이스를 디버거 소프트웨어(14)에 제공한다. 제어 프로그램(20)은 또한 외부 사건들의 기록과 재연을 제공하기 위해서 시스템(15,16)과 그들의 디바이스(18) 사이를 자체적으로 중재 조정한다.
가상 시간의 동등한 점들을 유지하는 데에는 여러 방법들이 있다. 한 실시예에서, 프로그램(12)은 변환 프로그램(13)에 의해 시험 시스템(15)에서 실행하는 명령어 세트를 위한 명령어들로 변환된다. 이 변환 프로그램(13)과 결합된 마이크로프로세서를 포함하는 시험 시스템(15)은 기준 시스템(16)에 의해 정의된 마이크로프로세서상에서 실행하도록 최초에 설계된 명령어 세트의 프로그램을 실행하도록 되어 있다. 최초 프로그램(12)의 상태와 변환 프로그램(13)에 의해 변환된 명령어들이 동일한 가상 시간의 동등한 점들을 결정하도록, 변환 프로그램(13)은 변환시, 프로그램(12)의 각 명령어 끝과 일치하여 2개의 시뮬레이션 모델(15,16)을 비교할 때 이용되는 동등한 점들을 나타내는 점들을 맵핑(mapping)한다. 제어 프로그램(20)은 이들 동등한 점들을 찾아서, 시스템(15,16)에서 명령어 시퀀스를 시작 및 중단할 시기와 장소를 결정한다.
이 시간 영역 맵핑을 이용하는 것에 더하여, 제어 프로그램(20)은 이들 두 시스템(15,16)에 의한 프로그램(12) 실행시, 동등한 점들에서 2개의 시뮬레이션 모델(15,16)의 주소 공간 맵핑을 검출하기 위한 수단을 제공한다. 예를 들면, 하나 또는 다른 시스템들은 프로세스를 가속하기 위해 레지스터 이름변경이나 유사한 기술들을 이용한다. 양자의 시스템(15,16)을 이용하는 상태의 일관성을 시험하기 위해서, 동일해야 할 데이터를 실제로 홀딩하는 레지스터들이 결정되야 한다. 유사하게, 메모리 데이터는 한 시스템에서는 메모리에 저장됨이 없이 프로세서 캐쉬에 저장되며, 다른 시스템에서는 주 메모리에 저장된다. 다시, 유용한 결과를 얻기 위해서 정확한 메모리가 비교되야 한다. 하나의 실시예에서, 제어 프로그램(20)은 제어하에 있는 시스템에게 추상적 레지스터나 메모리 이름에 관하여 질의한다. 시험 시스템과 기준 시스템들에서의 대용은 바라는 데이터를 제공하기 위해 추상적인 이름으로부터 저장 위치로의 전용 맵핑(private mapping)을 이용한다.
일단 이들 2개의 맵핑이 제공되면, 프로그램(12)으로부터의 선택된 명령어 시퀀스가 디버거 소프트웨어(14)에 의해 제어 프로그램(20)에 실행을 위해 제공된다. 디버거 소프트웨어(14)는 전형적으로 사용자에 의해 결정된 시퀀스에서 프로그램을 실행하고, 선택된 시간에 실행 모델의 상태를 결정하는 능력을 제공하지만, 하나의 시스템 또는 다른 시스템상의 프로그램 실행 사이의 비교를 성취할 능력을 갖지는 못한다. 디버거 소프트웨어(14)는 제어 프로그램(20)에 명령어 시퀀스를 제공한다. 제어 프로그램(20)은 명령어 시퀀스를 기준 시스템(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) 상에서 시퀀스가 완료된다. 이어서, 양자의 시스템들의 상태가 비교된다. 이들 시스템들의 상태가 시퀀스의 끝에서 동일할 경우, 프로그램(12)으로부터의 제2 명령어 시퀀스가 이들 두 시스템(15,16)상에서의 실행을 위해 디버거(14)에 제공된다.
프로그램(12)으로부터의 어떤 명령어 시퀀스의 실행이 동등한 점의 시험 시스템과 기준 시스템에서 서로 다른 상태를 제공하는 경우, 프로그램(12)은 비교가 동일한 상태를 제공했던 실행에서 이전에 검사된 동등한 점으로부터 재연된다. 전술된 특별한 실시예에서, 전술된 방식으로 2진 검색 모드에서 이 과정이 재연된다. 이전 명령어 시퀀스의 실행을 재연할 시에, 양쪽 시스템상에서 실행을 위한 외부 사건들의 어떤 변화를 없애기 위해, 기준 시스템에 의한 실행 동안 이전에 기록된 외부 사건들의 로그를 이용하는 것이 유용하다. 시퀀스의 제1 절반이 중간의 동등한 점에서 동일한 상태를 생성하는 경우, 명령어 시퀀스의 제2 절반의 제1 절반이 시험 시스템과 기준 시스템을 위해 재연된다. 시퀀스 부분들의 이와 같은 2진 시험이 계속되어, 2개의 시뮬레이션의 발산하는 점이 신속하게 격리되게 된다.
알 수 있는 바와 같이, 명령어 시퀀스 실행 시에 에러에 대한 이와 같은 2진 시험은 에러 점에 대한 매우 신속한 격리를 제공한다. 에러를 격리시키기 위한 검색이 항상 2진 검색으로 될 필요는 없다. 예를 들면, 상태가 일관된 가장 최근의 동등한 점을 찾기 위해 프로그램을 역전시키는 것보다 프로그램을 실행하는 것이 시간적으로 덜 비용이 드는 경우, 프로그램의 보다 작은 일부를 재연하는 것이 더 빠르므로, 에러를 격리시키기 위해 프로그램을 역전시키는 데에 요구되는 많은 시간을 줄인다. 어느 경우에서든, 운영자나 제어 프로그램의 제어 하에 길이가 변하는 긴 명령어 시퀀스를 통해 본질적으로 병렬로 이들 두 모델을 실행할 수 있는 능력은, 종래 기술에 요구되는 지루한 단계별 과정없이 슬레이브(slave)측의 시뮬레이션 모델에 대한 매우 빠르고 정확한 디버깅을 가능하게 해준다.
본 발명은 양호한 실시예에 관하여 설명되었지만은, 당업자이면 본 발명의 정신과 범위로부터 벗어남없이 여러 가지 수정과 변형을 가할 수 있다. 따라서, 본 발명은 청구범위에 의해 그 범위가 해석되어야 한다.

Claims (23)

  1. 컴퓨터 시스템에서 에러를 보정하기 위한 시스템으로서,
    보정될 에러들을 가지고 있는 시험 시스템과;
    상기 시험 시스템과 상이하며, 상기 에러를 보정하는데 있어서 기준이 되는 기준 시스템과; 그리고
    상기 기준 시스템과 상기 시험 시스템상에서 프로그램을 실행시키기 위한 제어 메커니즘으로 구성되며,
    상기 제어 메커니즘은,
    상기 프로그램에서 동일한 명령어 시퀀스를 나타내는, 상기 시험 시스템과 상기 기준 시스템 각각에 대한 명령어 시퀀스를 제공하는 수단과,
    상기 기준 시스템과 상기 시험 시스템 각각에서 동일한 명령어 시퀀스를 나타내는 상기 명령어 시퀀스를 실행하기 위한 수단과,
    상기 프로그램 실행시에 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 상태를 검출 및 기록하기 위한 수단과, 그리고
    상기 명령어 시퀀스의 끝을 포함하는 명령어 시퀀스의 선택가능한 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 검출된 상태를 비교하는 수단을 포함하는 것을 특징으로 하는 에러 보정용 시스템.
  2. 제 1 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우, 상기 기준 시스템과 상기 시험 시스템 각각에 대한 명령어 시퀀스의 선택가능한 동등한 점들 사이의 일부의 실행을 재연하기 위한 수단을 더 구비하는 것을 특징으로 하는 에러 보정용 시스템.
  3. 제 2 항에 있어서,
    상기 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우, 상기 기준 시스템과 상기 시험 시스템 각각에 대한 명령어 시퀀스의 선택가능한 동등한 점들 사이의 일부의 실행을 재연하기 위한 수단은, 상태 비교시에 차이점 검출에 응답하여 재연될 명령어 시퀀스의 일부를 리셋하는 것을 특징으로 하는 에러 보정용 시스템.
  4. 제 3 항에 있어서,
    상기 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우, 상기 기준 시스템과 상기 시험 시스템 각각에 대한 명령어 시퀀스의 선택가능한 동등한 점들 사이의 일부의 실행을 재연하기 위한 수단은, 상태가 상기 시험 시스템과 상기 기준 시스템에서 정확하게 비교되는 마지막 동등한 점과 비교되는 상태에서의 차이점이 검출된 동등한 점 사이에서 검색을 수행하는 것을 특징으로 하는 에러 보정용 시스템.
  5. 제 4 항에 있어서,
    상기 수행되는 검색은 2진 검색임을 특징으로 하는 에러 보정용 시스템.
  6. 제 1 항에 있어서,
    상기 제어 메커니즘은 상기 기준 시스템에 외부 사건을 제공하기 위한 수단을 더 구비하고,
    상기 기준 시스템에 외부 사건을 제공하기 위한 상기 수단에 의해 제공된 외부 사건을 기록하기 위한 수단을 더 구비하며, 그리고
    상기 제어 메커니즘은 명령어 시퀀스 실행시 상기 기준 시스템의 기록된 외부 사건을 상기 시험 시스템을 위한 외부 사건으로서 이용하는 수단을 더 구비하는 것을 특징으로 하는 에러 보정용 시스템.
  7. 제 6 항에 있어서,
    상기 제어 메커니즘은 외부 사건들과 그리고 외부 사건들이 제공되는 상기 동등한 점들을 변경하기 위한 수단을 구비하는 것을 특징으로 하는 에러 보정용 시스템.
  8. 제 2 항에 있어서,
    상기 제어 메커니즘은 상기 기준 시스템에 외부 사건을 제공하기 위한 수단을 더 구비하고,
    기준 시스템에 외부 사건을 제공하기 위한 상기 수단에 의해 제공된 외부 사건을 기록하기 위한 수단을 더 구비하며, 그리고
    상기 제어 메커니즘은 명령어 시퀀스 실행 재연시, 상기 기준 시스템과 상기 시험 시스템을 위한 외부 사건으로서 상기 기준 시스템의 기록된 외부 사건을 이용하는 수단을 구비하는 것을 특징으로 하는 에러 보정용 시스템.
  9. 제 1 항에 있어서,
    상기 프로그램 실행시 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 상태를 검출 및 기록하기 위한 수단은, 상기 기준 시스템과 상기 시험 시스템의 상태를 나타내는 대용 값들을 검출 및 기록하는 것을 특징으로 하는 에러 보정용 시스템.
  10. 제 6 항에 있어서,
    상기 제어 메커니즘은 상기 외부 사건들의 적용을 변경하면서 상기 기준 시스템과 상기 시험 시스템 각각의 명령어 시퀀스의 선택가능한 동등한 점들 사이의 부분들의 실행을 재연하는 수단을 더 구비하는 것을 특징으로 하는 에러 보정용 시스템.
  11. 제 1 항에 있어서,
    상기 명령어 시퀀스의 끝을 포함하는 상기 명령어 시퀀스의 선택가능한 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 검출된 상태를 비교하는 수단은, 상이한 상태를 선택할 수 있는 것을 특징으로 하는 에러 보정용 시스템.
  12. 컴퓨터 시스템에서 컴퓨터에 의해 실행되는 에러 검출 방법으로서,
    기준 시스템과 시험 시스템 각각에, 정확하게 실행되는 경우 상기 두 개의 각 시스템들에 동일한 결과를 야기시키는 상이한 명령어들의 시퀀스들을 제공하는 단계와;
    상기 기준 시스템과 상기 기준 시스템과는 상이한 상기 시험 시스템 각각에서 상기 명령어 시퀀스들을 실행하는 단계와;
    프로그램 실행시 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 상태를 검출 및 기록하는 단계와; 그리고
    상기 명령어 시퀀스의 끝을 포함하는 상기 명령어 시퀀스의 선택가능한 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 검출된 상태를 비교하는 단계를 구비하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우 상기 기준 시스템과 상기 시험 시스템 각각에 대한 선택가능한 동등한 점들 사이의 명령어 시퀀스의 일부분의 실행을 재연하는 단계를 더 구비하는 것을 특징으로 하는 방법.
  14. 제 13 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우 상기 기준 시스템과 상기 시험 시스템 각각에 대한 선택가능한 동등한 점들 사이의 명령어 시퀀스의 일부분의 실행을 재연하는 단계는, 상기 상태 비교시 차이점 검출에 응답하여 이루어지는 것을 특징으로 하는 방법.
  15. 제 13 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우 상기 기준 시스템과 상기 시험 시스템 각각에 대한 선택가능한 동등한 점들 사이의 명령어 시퀀스의 일부분의 실행을 재연하는 단계는, 상기 시험 시스템과 상기 기준 시스템에서 상태가 정확하게 비교되는 마지막의 동등한 점과 상태 비교시 차이점이 검출되었던 동등한 점 사이의 검색 수행을 포함하는 것을 특징으로 하는 방법.
  16. 제 13 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우 상기 기준 시스템과 상기 시험 시스템 각각에 대한 선택가능한 동등한 점들 사이의 명령어 시퀀스의 일부분의 실행을 재연하는 단계는, 상기 시험 시스템과 상기 기준 시스템에서 상태가 정확하게 비교되는 마지막 동등한 점과 상태 비교시 차이점이 검출되었던 동등한 점 사이의 2진 검색 수행을 포함하는 것을 특징으로 하는 방법.
  17. 제 13 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템의 상태 비교시 차이점이 검출되는 경우 상기 기준 시스템과 상기 시험 시스템 각각에 대한 선택가능한 동등한 점들 사이의 명령어 시퀀스의 일부분의 실행을 재연하는 단계는, 상기 시험 시스템과 상기 기준 시스템에서 상태가 정확하게 비교되는 마지막 동등한 점과 상태 비교시 차이점이 검출되었던 동등한 점 사이의 2진 검색 수행을 포함하며, 상기 검색 기술은 검색 속도를 높이도록 선택되는 것을 특징으로 하는 방법.
  18. 제 12 항에 있어서,
    상기 프로그램 실행시 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 상태를 검출 및 기록하는 단계는, 상기 기준 시스템과 상기 시험 시스템의 상태를 나타내는 대용 값들의 검출 및 기록을 포함하는 것을 특징으로 하는 방법.
  19. 제 12 항에 있어서,
    상기 기준 시스템에 외부 사건을 제공하는 단계와,
    상기 기준 시스템에 상기 외부 사건을 제공하는 수단에 의해 제공되는 외부 사건을 기록하는 단계와, 그리고
    상기 명령어 시퀀스 실행시 상기 기준 시스템의 기록된 외부 사건을 상기 시험 시스템에 대한 외부 사건으로서 이용하는 단계를 더 구비하는 것을 특징으로 하는 방법.
  20. 제 19 항에 있어서,
    상기 외부 사건들과 상기 외부 사건들이 제공되는 동등한 점들을 변경하는 단계를 더 구비하는 것을 특징으로 하는 방법.
  21. 제 13 항에 있어서,
    상기 기준 시스템에 상기 외부 사건들을 제공하는 단계와,
    상기 기준 시스템에 제공되는 상기 외부 사건들을 기록하는 단계와, 그리고
    상기 명령어 시퀀스 실행 재연시 상기 기준 시스템의 기록된 외부 사건들을 상기 기준 시스템과 상기 시험 시스템을 위한 외부 사건으로서 이용하는 단계를 더 구비하는 것을 특징으로 하는 방법.
  22. 제 21 항에 있어서,
    상기 기준 시스템과 상기 시험 시스템 각각에서, 상기 명령어 시퀀스의 선택가능한 동등한 점들 사이의 시퀀스의 일부분의 실행을 재연하는 단계는, 상기 외부 사건의 적용을 변경하는 단계를 포함하는 것을 특징으로 하는 방법.
  23. 제 12 항에 있어서,
    상기 명령어 시퀀스의 끝을 포함하는 명령어 시퀀스 내의 선택가능한 동등한 점들에서 상기 기준 시스템과 상기 시험 시스템의 검출된 상태를 비교하는 상기 단계는, 비교할 상태를 선택하는 단계를 포함하는 것을 특징으로 하는 방법.
KR10-1999-7007910A 1997-02-28 1998-02-13 컴퓨터 시스템에서 에러를 보정하기 위한 방법과 장치 KR100463809B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US08/807,542 1997-02-28
US8/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
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
KR20000075835A KR20000075835A (ko) 2000-12-26
KR100463809B1 true KR100463809B1 (ko) 2004-12-29

Family

ID=25196627

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-1999-7007910A KR100463809B1 (ko) 1997-02-28 1998-02-13 컴퓨터 시스템에서 에러를 보정하기 위한 방법과 장치

Country Status (9)

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

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
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
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
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
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
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
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
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
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
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
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
EP1188294B1 (en) * 1999-10-14 2008-03-26 Bluearc UK Limited Apparatus and method for hardware implementation or acceleration of operating system functions
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 联发科技股份有限公司 除错装置
US7457822B1 (en) 2002-11-01 2008-11-25 Bluearc Uk Limited Apparatus and method for hardware-based file system
US8041735B1 (en) 2002-11-01 2011-10-18 Bluearc Uk Limited Distributed file system and method
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
WO2008053709A1 (fr) * 2006-11-02 2008-05-08 Nec Corporation Dispositif et procédé de test de sélection de circuit intégré semi-conducteur
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
JP5400873B2 (ja) * 2008-06-05 2014-01-29 インターナショナル・ビジネス・マシーンズ・コーポレーション ソフトウェア問題を識別するための方法、システム、およびコンピュータ・プログラム
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
US9063721B2 (en) 2012-09-14 2015-06-23 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
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
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
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
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
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
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
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
US11113182B2 (en) 2019-04-01 2021-09-07 Microsoft Technology Licensing, Llc Reversible debugging in a runtime environment
US11074153B2 (en) 2019-04-01 2021-07-27 Microsoft Technology Licensing, Llc Collecting application state in a runtime environment for reversible debugging
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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590549A (en) * 1982-06-03 1986-05-20 Lucas Industries Control system primarily responsive to signals from digital computers
US5138708A (en) * 1989-08-03 1992-08-11 Unisys Corporation Digital processor using current state comparison for providing fault tolerance

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4590549A (en) * 1982-06-03 1986-05-20 Lucas Industries Control system primarily responsive to signals from digital computers
US5138708A (en) * 1989-08-03 1992-08-11 Unisys Corporation Digital processor using current state comparison for providing fault tolerance

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100463809B1 (ko) 컴퓨터 시스템에서 에러를 보정하기 위한 방법과 장치
JP4766540B2 (ja) プログラムコード変換の検証を実行するための方法および装置
US5845064A (en) Method for testing and verification of a CPU using a reference model
Guthoff et al. Combining software-implemented and simulation-based fault injection into a single fault injection method
Madeira et al. Experimental evaluation of the fail-silent behavior in computers without error masking
US20070055911A1 (en) A Method and System for Automatically Generating a Test-Case
US5438673A (en) Automatic interface for CPU real machine and logic simulator diagnostics
Lee et al. A novel simulation fault injection method for dependability analysis
US6415436B1 (en) Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
US5592674A (en) Automatic verification of external interrupts
US8140315B2 (en) Test bench, method, and computer program product for performing a test case on an integrated circuit
US7178138B2 (en) Method and tool for verification of algorithms ported from one instruction set architecture to another
US6847927B2 (en) Efficient array tracing in a logic simulator machine
Vinter et al. Reducing critical failures for control algorithms using executable assertions and best effort recovery
Na et al. Simulated fault injection using simulator modification technique
US7165201B2 (en) Method for performing testing of a simulated storage device within a testing simulation environment
US7162618B2 (en) Method for enhancing the visibility of effective address computation in pipelined architectures
Xiao et al. An ISA-level accurate fault simulator for system-level fault analysis
JP3152205B2 (ja) 論理シミュレーション装置及びその方法並びにその制御プログラムを記録した記録媒体
Mueller-Gritschneder et al. Safety evaluation based on virtual prototypes: fault injection with multi-level processor models
JPH06282599A (ja) 論理検証方法および装置
JPH07253909A (ja) マイクロプログラム検証方法
Lettner et al. Assessment of computer fault tolerance—a fault-injection toolset and the rationale behind it
JP2679153B2 (ja) 障害処理機能試験方法
JPH11338727A (ja) 情報処理装置の試験方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121129

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20131129

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20141128

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20161125

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 14

EXPY Expiration of term