KR101505258B1 - 프로브리스 트레이스 캡처를 갖는 아키텍처 실행의 재생 - Google Patents

프로브리스 트레이스 캡처를 갖는 아키텍처 실행의 재생 Download PDF

Info

Publication number
KR101505258B1
KR101505258B1 KR1020127030614A KR20127030614A KR101505258B1 KR 101505258 B1 KR101505258 B1 KR 101505258B1 KR 1020127030614 A KR1020127030614 A KR 1020127030614A KR 20127030614 A KR20127030614 A KR 20127030614A KR 101505258 B1 KR101505258 B1 KR 101505258B1
Authority
KR
South Korea
Prior art keywords
data
software
simulator
memory
architecture
Prior art date
Application number
KR1020127030614A
Other languages
English (en)
Other versions
KR20130019432A (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 KR20130019432A publication Critical patent/KR20130019432A/ko
Application granted granted Critical
Publication of KR101505258B1 publication Critical patent/KR101505258B1/ko

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/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

시스템 및 방법은 시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터를 캡처하는 것을 제공하고, 아키텍처 데이터는 상태 데이터 및 이벤트 데이터를 포함할 수 있다. 캡처된 아키텍처 데이터는 시뮬레이터에서 재생될 수 있고, 소프트웨어에 대응하는 고장 정보가 시뮬레이터로부터 획득된다.

Description

프로브리스 트레이스 캡처를 갖는 아키텍처 실행의 재생{REPLAYING ARCHITECTURAL EXECUTION WITH A PROBELESS TRACE CAPTURE}
실시예들은 일반적으로 소프트웨어 고장들의 평가에 관한 것이다. 더욱 구체적으로는, 실시예들은 소프트웨어 고장들을 평가하기 위한 캡처된 아키텍처 데이터의 재생에 관한 것이다.
소프트웨어를 디버깅하는 현재의 기법들은 문제의 플랫폼에서 테스트 콘텐츠를 실행하고, 고장의 원인을 격리하기 위해 테스트 콘텐츠를 수동으로 제거(pruning)하는 것을 수반할 수 있다. 이러한 접근법은 문제가 해결되기 전에 복수의 반복을 요구할 수 있다. 또한, 테스트 콘텐츠를 제거하는 것은 오직 콘텐츠의 소스가 이용가능할 때에 실현 가능할 수 있다. 소프트웨어를 디버깅하는 다른 기법들은 실행된 소프트웨어 로직을 추적하기 위해 로직 분석기의 이용을 수반할 수 있고, 트레이스 데이터(trace data)의 풀 스케일 분석(full scale analysis)이 수행된다. 그러나, 멀티 코어 및/또는 멀티 스레드 프로세서들을 향한 경향들이 로직 분석기들의 비용 및 복잡도의 증가뿐만 아니라 프로브(probe) 채널들의 수의 증가로 이어질 수 있다. 간단히 말해서, 소프트웨어를 디버깅하는 종래의 접근법들은 시간 소모적이고 비용이 많이 들 수 있다.
본 발명의 실시예들의 다양한 이점들은 다음의 도면들을 참조하여, 다음의 명세서 및 첨부된 청구항들을 읽음으로써 이 기술분야의 통상의 기술자에게 명백해질 것이다.
도 1은 실시예에 따라 소프트웨어를 평가하는 방식의 예의 블록도이다.
도 2는 실시예에 따라 메모리 트랜잭션들을 캡처하는 방법의 예의 흐름도이다.
도 3은 실시예에 따른 시스템의 예의 블록도이다.
실시예들은, 시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터가 캡처되는 방법을 제공할 수 있다. 아키텍처 데이터는 시뮬레이터에서 재생될 수 있고, 여기서 소프트웨어에 대응하는 고장 정보는 시뮬레이터로부터 획득될 수 있다.
다른 실시예들은, 프로세서에 의해 실행되는 경우, 컴퓨터로 하여금, 시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터를 캡처하고 아키텍처 데이터를 시뮬레이터에서 재생하도록 하는 저장된 명령어들의 세트를 갖는 컴퓨터 판독 가능한 저장 매체를 포함할 수 있다. 명령어들은 또한 컴퓨터로 하여금, 시뮬레이터로부터 고장 정보를 획득하도록 할 수 있고, 여기서 고장 정보는 소프트웨어에 대응한다.
또한, 실시예들은, 시스템의 펌웨어가 복수의 인터럽트에 응답하여, 시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터를 주기적으로 캡처하는 데 이용되는 방법을 제공할 수 있다. 아키텍처 데이터는 상태 데이터 및 이벤트 데이터를 포함할 수 있다. 아키텍처 데이터의 포맷은 시뮬레이터와 연관된 포맷으로 변환될 수 있고, 아키텍처 데이터는 시뮬레이터에서 재생될 수 있다. 방법은 또한 시뮬레이터로부터 고장 정보를 획득하는 것을 제공할 수 있고, 여기서 고장 정보는 소프트웨어에 대응한다.
이제 도 1을 보면, 시스템에서 실행되는 소프트웨어를 평가하는 방식(scheme)(10)이 도시된다. 방식(10)은 평가된 소프트웨어의 디버깅, 유효성, 및 최적화와 같은 폭넓은 동작들을 지원, 관리 및/또는 개선하는 데 이용될 수 있다. 또한, 소프트웨어가 실행하는 시스템은 랩톱, 퍼스널 디지털 어시스턴트(personal digital assistant; PDA), 모바일 인터넷 디바이스(mobile Internet device; MID), 무선 스마트폰, 미디어 플레이어, 이미징 디바이스 등, 또는 그의 임의의 결합과 같은 모바일 플랫폼을 포함할 수 있다. 시스템은 또한 퍼스널 컴퓨터(PC), 서버, 워크스테이션 등과 같은 고정 플랫폼의 부분일 수 있다.
일반적으로, 예시된 방식(10)은 실리콘 실행 시퀀스(12) 및 시뮬레이터 실행 시퀀스(14)를 포함한다. 실리콘 실행 시퀀스(12)는 범용 프로세서, 고정 기능 하드웨어(예를 들어, 내장 마이크로프로세서) 등의 하나 이상의 코어들과 같은 집적 회로에 의한 소프트웨어의 실행과 연관될 수 있고, 여기서, 집적 회로는 ASIC(application specific integrated circuit), CMOS(complementary metal oxide semiconductor) 또는 TTL(transistor-transistor logic) 기술, 또는 그의 임의의 결합과 같은 회로 기술을 이용하여 제조될 수 있다. 일 예에서, 소프트웨어는 멀티 스레드 또는 멀티 코어 환경과 같은 복잡한 실행 환경으로 인해 많은 상호작용들 및 종속성들(dependencies)을 갖는다.
예시된 예에서, 시스템은 실행 프로세싱 블록(16)에서 시스템 상의 소프트웨어의 실행을 시작함으로써 테스트 하에 놓인다. 화살표 인스턴스들(18)(18a-18b)은 주기적 또는 다른 기초로 인터럽트들의 발행을 나타내고, 여기서 인터럽트들은 덤프 핸들러(dump handler)(20)에 의해 아키텍처 상태 데이터(22)의 캡처를 개시할 수 있다. 캡처된 아키텍처 상태 데이터(22)는 명령어 인출 유닛들, 명령어 디코더들, 캐시들, 실행 유닛들, 레지스터들 등과 같은 시스템 아키텍처의 다양한 양태들에 관한 데이터를 포함할 수 있다. 소프트웨어의 실행이 후속하는 실행 프로세싱 블록들(30 및 34)에서 계속될 때, 아키텍처 이벤트 데이터(24)는 또한 이벤트 캡처 프로세싱 블록들(26 및 32)을 통해 각각 캡처될 수 있다. 아키텍처 이벤트 데이터는 메모리 트랜잭션(예를 들어, 로드-저장) 데이터 및 다른 데이터를 포함할 수 있다. 예시된 시퀀스(12)는 블록(28)에서 고장 포인트를 만날(encountered) 때까지 계속한다.
도 2는 메모리 트랜잭션 데이터를 캡처하는 방법(42)을 도시한다. 방법(42)은 RAM(random access memory), ROM(read only memory), PROM(programmable ROM), 플래시 메모리 등과 같은 메모리의 머신 또는 컴퓨터 판독 가능한 매체에 저장된 논리 명령어들의 세트로서 실행 가능한 소프트웨어에, ASIC, CMOS 또는 TTL 기술과 같은 회로 기술을 이용하는 고정 기능 하드웨어에, 또는 그의 임의의 결합에 구현될 수 있다. 예를 들어, 방법(42)에 도시된 동작들을 실행하기 위한 컴퓨터 프로그램 코드가 Java, Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어들과 같은 종래의 절차적 프로그래밍 언어들을 포함하여, 하나 이상의 프로그래밍 언어들의 임의의 결합에 기입될 수 있다. 다른 한편, 어셈블리 언어 프로그래밍 또는 머신 코드와 같은 고정 기능 하드웨어 또는 로우레벨 펌웨어 명령어들은 방법(42)에 도시된 동작들을 실행하는 데 이용될 수 있다. 사실상, 전술한 아키텍처 상태 덤프 핸들러(20) 동작들, 아키텍처 이벤트 캡처 블록들(26, 32), 및 인터럽트 화살표 인스턴스들(18)(도 1)은 모두 테스트 하의 시스템의 펌웨어(예를 들어, 커스텀 마이크로코드)에서 자동화될 수 있다. 따라서, 예시된 접근법은 테스트 하의 소프트웨어에 대한 고장 정보를 획득하기 위해 복잡한 로직 분석기들의 이용 또는 수동 디버깅을 요구하지 않는다(예를 들어, 외부 기구 없이 "프로브리스(probeless)" 테스트 배열을 제공한다).
예시된 프로세싱 블록(44)은 메모리 트랜잭션 데이터 캡처 펌웨어가 인에이블(enable)인지를 결정하는 것을 제공한다. 그렇다면, 블록(46)에서 테스트 소프트웨어의 동작들에 의해 액세스되는 하나 이상의 어드레스들이 식별되고 캡처될 수 있다. 캡처는 각각의 메모리 액세스에 수반되는 선형 어드레스뿐만 아니라 물리적 어드레스를 포함할 수 있다. 각각의 메모리 액세스를 시도한 실행 흐름에서의 명령어들과 같은 다른 실행 데이터 및 로드 동작들의 경우에 각각의 메모리 동작의 결과들(예를 들어, 플래그들, 레지스터들 등에 대한 변경들)이 또한 수집될 수 있다. 아래 논의되는 바와 같이, 블록(48)은 캡처된 어드레스들 및 실행 데이터를 패키지화하는 것을 제공하고, 블록(50)은 후속하는 변환 및/또는 시뮬레이터로의 전송을 위한 패키지화 정보를 저장하는 것을 제공한다. 또한, 메모리 동작은 테스트 하의 소프트웨어의 매크로- 또는 마이크로-동작 흐름에 대한 임의의 변경을 일으키지 않고 블록(52)에서 회수될 수 있다.
이제 도 1로 돌아가면, 캡처된 아키텍처 상태 데이터(22) 및 이벤트 데이터(24)는 시뮬레이터와 연관된 포맷으로 변환될 수 있고, 시뮬레이터 프로세싱 블록(36)은 캡처된 아키텍처 상태 데이터(22)로 시뮬레이터를 초기화하는 것을 제공한다. 아키텍처 시뮬레이터들의 예들은 뉴햄프셔 내슈어의 Gambit Communications로부터 이용가능한 MIMIC® 시뮬레이터, Bochs 오픈 소스 에뮬레이터(예를 들어, Bochs IA-32 Emulator, v2.4.5, April 25, 2010, Geeknet, Inc.), 및 QEMU 오픈 소스 에뮬레이터(예를 들어, QEMU vO.12.4, May 4, 2010)를 포함하며, 이것으로 한정되지 않는다. 프로세싱 블록(38)은 시뮬레이터에서 소프트웨어를 재생하기 위해 캡처된 이벤트 데이터(24)를 이용하는 것을 제공하며, 여기서, 블록(40)에서 테스트 하의 소프트웨어에 대한 고장 정보가 시뮬레이터로부터 획득될 수 있다. 고장 정보는 디버그 동작들, 유효성 동작들 및 최적화 동작들과 같은 부가적인 동작들을 수행하기 위해 이용될 수 있다.
예를 들어, 시스템 디버그 사용 모델에서, 아키텍처 재생은 소프트웨어 고장들로서 분류되는 이슈들의 빠른 선별을 가능하게 할 수 있다. 하나의 부산물(by-product)은 더욱 상세한 디버그의 필요시 이슈들의 분리일 수 있다. 또한, 환경 및 BIOS(기본 입출력 시스템) 관련 원인들로부터 나타나는 고장 이슈들은 예시된 접근법을 이용하여 식별될 수 있다.
유효성의 경우에, 특히 멀티 코어/멀티 스레드 환경들에서 동작하는 동안, 고장 정보는 상호운용성 및/또는 호환성에 영향을 미칠 수 있다. 표면화될 수 있는 이슈들은 코어들/스레드들에 걸친 동기화 이슈들, 인터 프로세서 로드/저장 이슈들, 인터 프로세서 인터럽트들의 정렬 등을 포함하고, 이것으로 한정되지 않는다. 따라서, 아키텍처 재생은 근원적인 고장들의 빠른 근본 원인 분석을 용이하게 할 수 있다.
또한, 예시된 접근법은 컴파일러들 및 스레딩 툴들과 같은 다른 툴들과 연결될 때, 소프트웨어 툴 체인(software tool chain)을 가능하게 하고 최적화하기 위해서 장비 제조자들 및 소프트웨어 벤더들에 의해 이용될 수 있는 소프트웨어 개발 키트들 내로 통합될 수 있다.
도 3은 랩톱, PDA, MID, 무선 스마트폰, 미디어 플레이어, 이미징 디바이스 등, 또는 그의 임의의 결합과 같은 모바일 플랫폼의 부분일 수 있는 컴퓨팅 시스템(54)을 도시한다. 시스템(54)은 PC, 서버, 워크스테이션 등과 같은 고정 플랫폼의 부분일 수도 있다. 예시된 시스템(10)은 더블 데이터 레이트(double data rate; DDR) 동기식 동적 랜덤 액세스 메모리(SDRAM, 예를 들어, DDR3 SDRAM JEDEC Standard JESD79-3C, April 2008) 모듈들을 포함할 수 있는, 시스템 메모리(60)에 대한 액세스를 제공하는 통합 메모리 컨트롤러(58)를 포함할 수 있는 호스트 프로세서(56)를 포함한다. 시스템 메모리(60)의 모듈들은 싱글 인라인 메모리 모듈(single inline memory module; SIMM), 듀얼 인라인 메모리 모듈(dual inline memory module; DIMM), 스몰 아웃라인 DIMM(small outline DIMM; SODIMM) 등 내로 통합될 수 있다. 프로세서(56)는 또한 하나 이상의 프로세서 코어들(62)을 가질 수 있고, 각각의 코어(62)는 명령어 인출 유닛들, 명령어 디코더들, 레벨 원(L1) 캐시, 실행 유닛들 등과 완전히 정상 가동(fully functional with)될 수 있다. 일 예에서, 프로세서(56)의 내부 캐시(들)는 정적 RAM(SRAM)에 구현될 수 있다. 프로세서(56)는 또한 Microsoft Windows, Linux, 또는 Mac(Macintosh) OS와 같은 오퍼레이팅 시스템(OS), 및 다양한 다른 소프트웨어 애플리케이션들을 실행할 수 있고, 여기서 이러한 소프트웨어는 하나 이상의 고장 포인트들을 경험할 수 있다.
예시된 프로세서(56)는 특정 시스템들에서 사우스브리지라고도 알려진, 플랫폼 컨트롤러 허브(platform controller hub; PCH)(64)와 통신한다. PCH(64)는 USB (Universal Serial Bus, 예를 들어, USB Specification 2.0, USB Implementers Forum), Serial ATA(SATA, 예를 들어, SATA Rev. 3.0 Specification, May 27, 2009, SATA International Organization/SATA-IO), 고선명 오디오(High Definition Audio), 및 다른 컨트롤러들과 같은 내부 컨트롤러들(도시되지 않음)을 가질 수 있다. PCH(64)는 셀룰러 전화기(예를 들어, W-CDMA (UMTS), CDMA2000 (IS-856/IS-2000), 등), WiFi(예를 들어, IEEE 802.11, 1999 Edition, LAN/MAN Wireless LANS), 블루투스(예를 들어, IEEE 802.15.1-2005, Wireless Personal Area Networks), WiMax(예를 들어, IEEE 802.16-2004, LAN/MAN Broadband Wireless LANS), GPS(Global Positioning System), 확산 스펙트럼(spread spectrum)(예를 들어, 900 MHz), 및 다른 무선 주파수(RF) 전화 목적들과 같은 폭넓은 목적들을 위해 오프 플랫폼 통신 기능(off-platform communication functionality)을 제공할 수 있는 네트워크 컨트롤러(70)와 통신할 수 있다. 예시된 PCH(64)는 또한 하나 이상의 대용량 저장 장치들에 결합되고, 이것은 하드 디스크 드라이브(HDD)(66), ROM, 광학 디스크, 플래시 메모리 등을 포함할 수 있다. 또한, PCH(64)는, 사용자가 시스템(54)으로부터의 정보와 상호작용하고 인지할 수 있게 하기 위해서, 마이크로폰, 디스플레이, 키패드, 마우스, 스피커들 등과 같은 사용자 인터페이스(UI) 디바이스들(68)에 대한 지원을 제공할 수 있다.
코어들(62)은, 처음에 BIOS(72)로부터(예를 들어, 패치로서 플래시 메모리, PROM, 또는 NAND-기반 고체 상태 디스크(SSD)로부터) 로드되거나, 툴을 통해 동적으로 로드되거나, 또는 이미 프로세서(56)의 UROM(microROM, 도시되지 않음)에 상주할 수 있는, 프로브리스 논리 명령어들의 세트(예를 들어, 마이크로코드/펌웨어)(74)를 실행할 수 있다. 예시된 예에서, 프로브리스 논리 명령어들(74)의 세트의 실행은 시스템(54)으로 하여금, 테스트 하의 소프트웨어의 실행에 영향을 미치지 않고 시스템(54)에서 실행되는 소프트웨어(예를 들어, OS 및 다른 애플리케이션 프로그램 코드)에 대한 아키텍처 데이터를 캡처하도록 한다. 또한, 논리 명령어들(74)은 시뮬레이터에서 캡처된 아키텍처 데이터를 재생하고, 시뮬레이터로부터 고장 정보를 획득할 수 있고, 여기서, 고장 정보는 시스템(54)에서 실행되는 소프트웨어에 대응한다. 이미 언급한 바와 같이, 아키텍처 데이터는 상태 데이터 및 이벤트 데이터를 포함할 수 있고, 여기서, 일 예에서, 이벤트 데이터는 메모리 트랜잭션 데이터를 포함한다.
본 발명의 실시예들은 모든 타입의 반도체 집적 회로("IC") 칩들과 이용하기 위해 적용가능하다. 이들 IC 칩들의 예들은 프로세서들, 컨트롤러들, 칩셋 컴포넌트들, PLA(programmable logic arrays), 메모리 칩들, 네트워크 칩들 등을 포함하고, 이것으로 한정되지 않는다. 또한, 도면들 중 일부에서, 신호 도선들은 선들로 표현된다. 일부는 더 구성적인(constituent) 신호 경로들을 표시하기 위해 더 두꺼울 수 있고, 구성적인 신호 경로들의 수를 표시하기 위해 숫자 표시를 가질 수 있고, 및/또는 주요 정보 흐름 방향을 표시하기 위해 하나 이상의 끝에 화살표를 가질 수 있다. 그러나, 이것은 한정하는 방식으로 이해되어서는 안 된다. 오히려, 이러한 부가된 상세는 회로의 더 쉬운 이해를 용이하게 하기 위해 하나 이상의 예시적인 실시예들과 결합하여 이용될 수 있다. 임의의 표현된 신호 라인들은, 부가적인 정보를 갖든 갖지 않든지, 실제로 복수의 방향으로 이동할 수 있는 하나 이상의 신호들을 포함할 수 있고, 임의의 적절한 타입의 신호 방식, 예를 들어, 차동 쌍들, 광섬유 라인들, 및/또는 싱글 엔드형(single-ended) 라인들로 구현되는 디지털 또는 아날로그 라인들로 구현될 수 있다.
예시적인 사이즈들/모델들/값들/범위들이 주어질 수 있지만, 본 발명의 실시예들은 그것으로 한정되지 않는다. 제조 기법들(예를 들어, 포토리소그래피)이 시간에 따라 발달함에 따라, 더 작은 사이즈의 디바이스들이 제조될 수 있을 것으로 예상된다. 또한, 예시 및 논의의 간단함을 위해, 그리고 발명의 실시예들의 특정 양태들을 불명료하게 하지 않기 위해, IC 칩들 및 다른 컴포넌트들에 대한 잘 알려진 전력/접지 접속들은 도면들 내에 도시될 수 있거나 도시되지 않을 수 있다. 또한, 발명의 실시예들을 불명료하게 하는 것을 피하기 위해서, 그리고 그러한 블록도 배열들의 구현에 대한 세부사항들은 실시예가 구현될 플랫폼에 크게 의존한다는, 즉, 이러한 세부사항들은 이 기술분야의 통상의 기술자의 범위 내에 있어야 한다는 사실에 비추어, 배열들은 블록도 형태로 도시될 수 있다. 특정 상세들(예를 들어, 회로들)은 발명의 예시적인 실시예들을 설명하기 위해서 제시되며, 발명의 실시예들은 이들 특정 상세들 없이 또는 그의 변형에 의해 실시될 수 있다는 것이 이 기술분야의 통상의 기술자에게 명백해야 한다. 따라서, 설명은 제한하는 대신에 예시적인 것으로서 고려되어야 한다.
일부 실시예들은 예를 들어, 머신에 의해 실행되는 경우, 머신으로 하여금, 실시예들에 따라 방법 및/또는 동작들을 수행하도록 할 수 있는 명령어 또는 명령어들의 세트를 저장할 수 있는 머신 또는 유형의 컴퓨터 판독 가능한 매체 또는 물품을 이용하여 구현될 수 있다. 이러한 머신은 예를 들어, 임의의 적절한 프로세싱 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 디바이스, 프로세싱 디바이스, 컴퓨팅 시스템, 프로세싱 시스템, 컴퓨터, 프로세서, 등을 포함할 수 있고, 하드웨어 및/또는 소프트웨어의 임의의 적절한 결합을 이용하여 구현될 수 있다. 머신 판독 가능한 매체 또는 물품은 예를 들어, 임의의 적절한 타입의 메모리 유닛, 메모리 디바이스, 메모리 물품, 메모리 매체, 저장 디바이스, 저장 물품, 저장 매체 및/또는 저장 유닛, 예를 들어, 메모리, 제거가능한 또는 제거불가능한 매체, 소거가능한 또는 소거불가능한 매체, 기입가능한 또는 재기입가능한 매체, 디지털 또는 아날로그 매체, 하드 디스크, 플로피 디스크, CD-ROM(Compact Disk Read Only Memory), CD-R(Compact Disk Recordable), CD-RW(Compact Disk Rewriteable), 광학 디스크, 자기 매체, 광자기 매체, 제거가능한 메모리 카드들 또는 디스크들, 다양한 타입들의 DVD(Digital Versatile Disk), 테이프, 카세트 등을 포함할 수 있다. 명령어들은 임의의 적절한 하이레벨, 로우레벨, 객체 지향, 비주얼, 컴파일(compiled) 및/또는 인터프리트(interpreted) 프로그래밍 언어를 이용하여 구현되는, 소스 코드, 컴파일 코드, 인터프리트 코드, 실행가능한 코드, 정적 코드, 동적 코드, 암호화 코드 등과 같은 임의의 적절한 타입의 코드를 포함할 수 있다.
달리 구체적으로 언급되지 않는 한, "프로세싱", "컴퓨팅", "계산", "결정" 등과 같은 용어들은, 컴퓨팅 시스템의 레지스터들 및/또는 메모리들 내에 물리적 양들(예를 들어, 전자)로서 표현되는 데이터를, 컴퓨팅 시스템의 메모리들, 레지스터들 또는 다른 그러한 정보 저장소, 전송 또는 디스플레이 디바이스들 내에 물리적 양들로서 유사하게 표현되는 다른 데이터로 조작 및/또는 변환하는, 컴퓨터 또는 컴퓨팅 시스템, 또는 유사한 전자 컴퓨팅 디바이스의 액션 및/또는 프로세스들을 가리킨다는 것을 알 수 있다. 실시예들은 이러한 문맥에서 한정되지 않는다.
"결합된"이라는 용어는 본원에서 문제의 컴포넌트들 사이의, 직접 또는 간접의 임의의 타입의 관계를 가리키기 위해 이용되며, 전기, 기계, 유체, 광학, 전자기, 전기기계 또는 다른 접속들에 적용할 수 있다. 또한, "제1", "제2" 등이라는 용어들은 오직 본원에서 논의를 용이하게 하기 위해서 이용되고, 달리 표시되지 않는 한 어떠한 특정 시간적 또는 연대적 의미도 지니지 않는다.
이 기술분야의 통상의 기술자들은 전술한 설명으로부터 본 발명의 실시예들의 광범위한 기법들이 다양한 형태로 구현될 수 있다는 것을 알 것이다. 따라서, 본 발명의 실시예들은 그의 특정 예들과 결합하여 설명되었지만, 다른 수정들이 도면들, 명세서, 및 다음의 청구항들의 학습시에 숙련된 전문가에게 명백할 것이기 때문에, 발명의 실시예들의 진정한 범위는 그렇게 한정되어서는 안 된다.

Claims (24)

  1. 시스템의 펌웨어를 이용하여, 상기 시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터(architecture data)를, 복수의 인터럽트에 응답하여, 주기적으로 캡처하는 단계 - 상기 아키텍처 데이터는 상기 시스템의 컴포넌트의 상태에 대응하는 상태 데이터 및 실행 데이터를 포함하는 이벤트 데이터를 포함하고, 상기 실행 데이터는 메모리 동작에 대응하는 결과를 포함하는 메모리 트랜잭션 데이터를 포함함 - ;
    상기 아키텍처 데이터의 포맷을 시뮬레이터와 연관된 포맷으로 변환하는 단계;
    상기 시뮬레이터에서 상기 아키텍처 데이터를 재생하는 단계; 및
    상기 소프트웨어에 대응하는 고장 정보를 상기 시뮬레이터로부터 획득하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 소프트웨어의 동작에 의해 액세스되는 하나 이상의 캡처된 어드레스들을 식별하는 단계; 및
    상기 하나 이상의 캡처된 어드레스들을 상기 소프트웨어에 대응하는 상기 실행 데이터와 패키지화하여(packaging) 상기 시뮬레이터로 전송하는 단계
    를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 고장 정보에 기초하여 디버그 동작, 유효성(validation) 동작 및 최적화 동작 중 적어도 하나를 수행하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 상기 아키텍처 데이터는 멀티 코어(multi-core) 프로세서 및 멀티 스레드(multi-threaded) 프로세서 중 적어도 하나를 포함하는 시스템에서 실행되는 소프트웨어에 대해 캡처되는 방법.
  5. 프로세서에 의해 실행되는 경우, 컴퓨터로 하여금,
    시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터를 상기 시스템의 펌웨어에 의해 캡처하고 - 상기 아키텍처 데이터는 상기 시스템의 컴포넌트의 상태에 대응하는 상태 데이터 및 실행 데이터를 포함하는 이벤트 데이터를 포함하고, 상기 실행 데이터는 메모리 동작에 대응하는 결과를 포함하는 메모리 트랜잭션 데이터를 포함함 -;
    시뮬레이터에서 상기 아키텍처 데이터를 재생하고;
    상기 소프트웨어에 대응하는 고장 정보를 상기 시뮬레이터로부터 획득하도록 하는 명령어들의 세트를 포함하고,
    상기 명령어들은, 실행되는 경우, 또한 컴퓨터로 하여금, 상기 시스템의 펌웨어에 의한 복수의 인터럽트의 발행에 응답하여 상기 아키텍처 데이터를 주기적으로 캡처하도록 하는 컴퓨터 판독 가능한 저장 매체.
  6. 삭제
  7. 삭제
  8. 제5항에 있어서, 상기 명령어들은, 실행되는 경우, 또한 상기 컴퓨터로 하여금,
    상기 소프트웨어의 동작에 의해 액세스되는 하나 이상의 캡처된 어드레스들을 식별하고;
    상기 하나 이상의 캡처된 어드레스들을 상기 소프트웨어에 대응하는 상기 실행 데이터와 패키지화하여 상기 시뮬레이터에 전송되게 하고,
    상기 하나 이상의 어드레스들은 선형 어드레스 및 물리적 어드레스 중 적어도 하나를 포함하는 컴퓨터 판독 가능한 저장 매체.
  9. 제5항에 있어서, 상기 명령어들은, 실행되는 경우, 또한 컴퓨터로 하여금, 상기 펌웨어에 의해 발행된 복수의 인터럽트에 응답하여 상기 아키텍처 데이터를 주기적으로 캡처하도록 하는 컴퓨터 판독 가능한 저장 매체.
  10. 제5항에 있어서, 상기 명령어들은, 실행되는 경우, 또한 컴퓨터로 하여금, 상기 고장 정보에 기초하여 디버그 동작, 유효성 동작 및 최적화 동작 중 적어도 하나를 수행하도록 하는 컴퓨터 판독 가능한 저장 매체.
  11. 제5항에 있어서, 상기 명령어들은, 실행되는 경우, 또한 컴퓨터로 하여금, 상기 아키텍처 데이터의 포맷을 상기 시뮬레이터와 연관된 포맷으로 변환하도록 하는 컴퓨터 판독 가능한 저장 매체.
  12. 제5항에 있어서, 상기 시스템은 멀티 코어 프로세서 및 멀티 스레드 프로세서 중 적어도 하나를 포함하는 컴퓨터 판독 가능한 저장 매체.
  13. 시스템에서 실행되는 소프트웨어에 대한 아키텍처 데이터를 상기 시스템의 펌웨어에 의해 캡처하는 단계 - 상기 아키텍처 데이터는 상기 시스템의 컴포넌트의 상태에 대응하는 상태 데이터 및 실행 데이터를 포함하는 이벤트 데이터를 포함하고, 상기 실행 데이터는 메모리 동작에 대응하는 결과를 포함하는 메모리 트랜잭션 데이터를 포함함 -;
    시뮬레이터에서 상기 아키텍처 데이터를 재생하는 단계; 및
    상기 소프트웨어에 대응하는 고장 정보를 상기 시뮬레이터로부터 획득하는 단계
    를 포함하는 방법.
  14. 삭제
  15. 삭제
  16. 제13항에 있어서,
    상기 소프트웨어의 동작에 의해 액세스되는 하나 이상의 캡처된 어드레스들을 식별하는 단계; 및
    상기 하나 이상의 캡처된 어드레스들을 상기 소프트웨어에 대응하는 실행 데이터와 패키지화하여 상기 시뮬레이터에 전송하는 단계
    를 더 포함하고, 상기 하나 이상의 어드레스들은 선형 어드레스 및 물리적 어드레스 중 적어도 하나를 포함하는 방법.
  17. 제13항에 있어서, 상기 펌웨어에 의해 발행된 복수의 인터럽트에 응답하여 상기 아키텍처 데이터를 주기적으로 캡처하는 단계를 더 포함하는 방법.
  18. 제13항에 있어서, 상기 고장 정보에 기초하여 디버그 동작, 유효성 동작 및 최적화 동작 중 적어도 하나를 수행하는 단계를 더 포함하는 방법.
  19. 제13항에 있어서, 상기 아키텍처 데이터의 포맷을 상기 시뮬레이터와 연관된 포맷으로 변환하는 단계를 더 포함하는 방법.
  20. 제13항에 있어서, 상기 아키텍처 데이터는 멀티 코어 프로세서 및 멀티 스레드 프로세서 중 적어도 하나를 포함하는 시스템에서 실행되는 소프트웨어에 대해 캡처되는 방법.
  21. 제2항에 있어서,
    상기 펌웨어가 인에이블된 메모리 트랜잭션 데이터 캡처 펌웨어를 포함하는 지를 결정하는 단계를 더 포함하고,
    상기 메모리 동작은 상기 메모리 트랜잭션 데이터 캡처 펌웨어가 디스에이블될 때 상기 메모리 트랜잭션 데이터를 캡처하지 않고 회수되는(retired) 방법.
  22. 제21항에 있어서,
    메모리 로드 동작, 메모리 저장 동작, 및 상기 펌웨어가 상기 인에이블된 메모리 트랜잭션 데이터 캡처 펌웨어를 포함할 때 시도된 메모리 액세스를 위한 실행 흐름에서의 명령어 중 하나 이상을 식별하는 단계를 더 포함하는 방법.
  23. 제22항에 있어서,
    상기 결과는 상기 메모리 로드 동작에 대응하는 레지스터에 대한 변화 및 상기 시도된 메모리 액세스에 대응하는 결과를 포함하는 방법.
  24. 제1항에 있어서,
    상기 컴포넌트는 명령어 페치 유닛, 명령어 디코더, 캐시, 실행 유닛 및 레지스터 중 하나 이상을 포함하는 방법.
KR1020127030614A 2010-06-28 2011-06-20 프로브리스 트레이스 캡처를 갖는 아키텍처 실행의 재생 KR101505258B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/825,014 US8924788B2 (en) 2010-06-28 2010-06-28 Replaying architectural execution with a probeless trace capture
US12/825,014 2010-06-28
PCT/US2011/041086 WO2012009105A2 (en) 2010-06-28 2011-06-20 Replaying architectural execution with a probeless trace capture

Publications (2)

Publication Number Publication Date
KR20130019432A KR20130019432A (ko) 2013-02-26
KR101505258B1 true KR101505258B1 (ko) 2015-03-24

Family

ID=45353749

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127030614A KR101505258B1 (ko) 2010-06-28 2011-06-20 프로브리스 트레이스 캡처를 갖는 아키텍처 실행의 재생

Country Status (6)

Country Link
US (1) US8924788B2 (ko)
EP (1) EP2585922A4 (ko)
JP (1) JP5551828B2 (ko)
KR (1) KR101505258B1 (ko)
CN (1) CN102918508B (ko)
WO (1) WO2012009105A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924788B2 (en) 2010-06-28 2014-12-30 Intel Corporation Replaying architectural execution with a probeless trace capture
CN103324570A (zh) * 2013-06-18 2013-09-25 安科智慧城市技术(中国)有限公司 一种被测试系统功能的测试方法、系统
US10198341B2 (en) * 2016-12-21 2019-02-05 Microsoft Technology Licensing, Llc Parallel replay of executable code
US11544148B2 (en) 2021-04-02 2023-01-03 Microsoft Technology Licensing, Llc Preserving error context during a reboot of a computing device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145099A (en) * 1996-08-13 2000-11-07 Nec Corporation Debugging system
US20030200491A1 (en) 2000-01-18 2003-10-23 Woo Steven Cameron Method for verifying and improving run-time of a memory test

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6452062A (en) 1987-08-21 1989-02-28 Nippon Telegraph & Telephone Ionic source
JPH01251142A (ja) 1988-03-31 1989-10-06 Toshiba Corp プログラムトレース方式
US5513315A (en) * 1992-12-22 1996-04-30 Microsoft Corporation System and method for automatic testing of computer software
JPH0863368A (ja) 1994-08-23 1996-03-08 Hitachi Ltd エミュレータおよびマイクロコンピュータ
JPH08147191A (ja) 1994-11-22 1996-06-07 Hitachi Ltd エミュレータおよびそれを用いたマイクロコンピュータ開発支援装置
JPH08314817A (ja) 1995-05-15 1996-11-29 Hitachi Ltd エラー解析方式
US7124108B1 (en) * 1998-06-22 2006-10-17 Kimle Kevin L Method for electronically initiating and managing agricultural production contracts
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US6557636B2 (en) * 2001-06-29 2003-05-06 Shell Oil Company Method and apparatus for perforating a well
US7188061B2 (en) * 2001-07-16 2007-03-06 International Business Machines Corporation Simulation monitors based on temporal formulas
US6651187B2 (en) 2001-12-31 2003-11-18 Globespanvirata Inc. System and method for determining fault path behavior
US8103497B1 (en) * 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
US6904576B2 (en) * 2002-08-09 2005-06-07 Synplicity, Inc. Method and system for debugging using replicated logic
US7146606B2 (en) * 2003-06-26 2006-12-05 Microsoft Corporation General purpose intermediate representation of software for software development tools
US7380235B1 (en) * 2003-06-27 2008-05-27 Microsoft Corporation Application program interface call replay tool
US20050071499A1 (en) * 2003-09-30 2005-03-31 Batra Rajesh K. Real-time diagnostic data streams for tunable optical devices
US7877733B2 (en) 2004-07-14 2011-01-25 Oracle International Corporation Failure test framework
US20060155525A1 (en) 2005-01-10 2006-07-13 Aguilar Maximino Jr System and method for improved software simulation using a plurality of simulator checkpoints
US7634687B2 (en) * 2005-01-13 2009-12-15 Microsoft Corporation Checkpoint restart system and method
FR2882449A1 (fr) * 2005-01-21 2006-08-25 Meiosys Soc Par Actions Simpli Procede non intrusif de rejeu d'evenements internes au sein d'un processus applicatif, et systeme mettant en oeuvre ce procede
DE602006002967D1 (de) * 2005-01-28 2008-11-13 Ibm Zählverfahren für anweisungen zur protokollierung und wiedergabe einer deterministischen ereignisabfolge
US7747844B2 (en) * 2005-03-31 2010-06-29 Hewlett-Packard Development Company, L.P. Acquiring instruction addresses associated with performance monitoring events
US7577876B2 (en) * 2005-06-28 2009-08-18 Intel Corporation Debug system for data tracking
US7620938B2 (en) * 2005-10-31 2009-11-17 Microsoft Corporation Compressed program recording
US7899661B2 (en) * 2006-02-16 2011-03-01 Synopsys, Inc. Run-time switching for simulation with dynamic run-time accuracy adjustment
US8079019B2 (en) * 2007-11-21 2011-12-13 Replay Solutions, Inc. Advancing and rewinding a replayed program execution
US20080046699A1 (en) * 2006-08-21 2008-02-21 International Business Machines Corporation Method and apparatus for non-deterministic incremental program replay using checkpoints and syndrome tracking
US7684881B2 (en) * 2006-09-28 2010-03-23 Rockwell Automation Technologies, Inc. Transient-sensitive indicators for HMI devices
US8135572B2 (en) * 2007-01-23 2012-03-13 Microsoft Corporation Integrated debugger simulator
US7945434B2 (en) * 2007-03-22 2011-05-17 Progress Software Corporation Non-intrusive event capturing for event processing analysis
US9710784B2 (en) * 2007-03-30 2017-07-18 Software Ag Market data-driven simulation of order book mechanics
US7974828B2 (en) * 2007-04-27 2011-07-05 Omron Corporation Simulation device for programmable controller
CN101067798A (zh) * 2007-06-14 2007-11-07 华南理工大学 一种动态探针方法及其在嵌入式系统中的应用
JP4828483B2 (ja) 2007-08-04 2011-11-30 株式会社リコー 半導体集積回路
US20090089320A1 (en) * 2007-09-28 2009-04-02 Dov Tendler Capturing application state information for simulation in managed environments
US7870438B2 (en) * 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US7933759B2 (en) * 2008-03-28 2011-04-26 Microsoft Corporation Predicate checking for distributed systems
US8655800B2 (en) * 2008-10-07 2014-02-18 Hewlett-Packard Development Company, L.P. Distance based visualization of event sequences
US8499297B2 (en) * 2008-10-28 2013-07-30 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US20100319004A1 (en) * 2009-06-16 2010-12-16 Microsoft Corporation Policy Management for the Cloud
US8578342B2 (en) * 2009-07-14 2013-11-05 International Business Machines Corporation Fault detection and localization in dynamic software applications requiring user inputs and persistent states
US20110061050A1 (en) * 2009-09-04 2011-03-10 Sahita Ravi L Methods and systems to provide platform extensions for trusted virtual machines
US8495344B2 (en) * 2010-01-22 2013-07-23 Via Technologies, Inc. Simultaneous execution resumption of multiple processor cores after core state information dump to facilitate debugging via multi-core processor simulator using the state information
US8656228B2 (en) * 2010-06-23 2014-02-18 International Business Machines Corporation Memory error isolation and recovery in a multiprocessor computer system
US8924788B2 (en) 2010-06-28 2014-12-30 Intel Corporation Replaying architectural execution with a probeless trace capture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6145099A (en) * 1996-08-13 2000-11-07 Nec Corporation Debugging system
US20030200491A1 (en) 2000-01-18 2003-10-23 Woo Steven Cameron Method for verifying and improving run-time of a memory test

Also Published As

Publication number Publication date
KR20130019432A (ko) 2013-02-26
WO2012009105A3 (en) 2012-03-08
US20110320877A1 (en) 2011-12-29
JP5551828B2 (ja) 2014-07-16
JP2013531292A (ja) 2013-08-01
WO2012009105A2 (en) 2012-01-19
CN102918508A (zh) 2013-02-06
US8924788B2 (en) 2014-12-30
EP2585922A2 (en) 2013-05-01
CN102918508B (zh) 2016-02-24
EP2585922A4 (en) 2015-11-11

Similar Documents

Publication Publication Date Title
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
TWI410864B (zh) 在一處理環境中控制指令執行
JP5988444B2 (ja) 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム
US10067813B2 (en) Method of analyzing a fault of an electronic system
EP2615552A1 (en) System testing method
US20140129875A1 (en) Method for reading kernel log upon kernel panic in operating system
US10304522B2 (en) Method for low power operation and test using DRAM device
US8402446B2 (en) Associating probes with test cases
US20110016455A1 (en) Power Profiling for Embedded System Design
US10528443B2 (en) Validation of multiprocessor hardware component
KR101505258B1 (ko) 프로브리스 트레이스 캡처를 갖는 아키텍처 실행의 재생
CN110597704B (zh) 应用程序的压力测试方法、装置、服务器和介质
CN105741883A (zh) 测试方法和装置
CN114090379A (zh) 服务器总线故障定位方法、装置、电子设备及存储介质
JP6963552B2 (ja) ブロックアトミック実行モデルを利用するプロセッサベースシステムにおける部分的に実行された命令ブロックのリプレイ
US9424165B2 (en) Debugging processor hang situations using an external pin
KR20200088760A (ko) 체크섬 생성
JP4701025B2 (ja) デバッグ支援システム、デバッグ支援方法、デバッグ支援ターゲットプログラム
US20150149984A1 (en) Determining instruction execution history in a debugger
CN110928786A (zh) 针对财务程序的测试方法和装置
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
US20170132094A1 (en) Technologies for analyzing persistent memory programs
US8489927B2 (en) Device for use in inspecting a CPU and method thereof
US20080189527A1 (en) Employing a buffer to facilitate instruction execution

Legal Events

Date Code Title Description
A201 Request for examination
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: 20190227

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200227

Year of fee payment: 6