KR20090113251A - 트레이스의 저장 어드레스에 독립적인 트레이스 핸들 정의 방법 - Google Patents

트레이스의 저장 어드레스에 독립적인 트레이스 핸들 정의 방법 Download PDF

Info

Publication number
KR20090113251A
KR20090113251A KR1020097012621A KR20097012621A KR20090113251A KR 20090113251 A KR20090113251 A KR 20090113251A KR 1020097012621 A KR1020097012621 A KR 1020097012621A KR 20097012621 A KR20097012621 A KR 20097012621A KR 20090113251 A KR20090113251 A KR 20090113251A
Authority
KR
South Korea
Prior art keywords
trace
handle
instructions
memory
traces
Prior art date
Application number
KR1020097012621A
Other languages
English (en)
Other versions
KR101107824B1 (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 KR20090113251A publication Critical patent/KR20090113251A/ko
Application granted granted Critical
Publication of KR101107824B1 publication Critical patent/KR101107824B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • 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/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

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

Abstract

메모리에 독립적인 트레이스 핸들이 제공된다. 핸들은 트레이스의 메모리 위치가 아닌 트레이스의 콘텐트를 이용하여 생성된다. 이로써, 트레이스와 연관된 애플리케이션의 후속 실행에서 트레이스가 용이하게 식별될 수 있다.
트레이스, 핸들

Description

트레이스의 저장 어드레스에 독립적인 트레이스 핸들 정의 방법{DEFINING TRACE HANDLES INDEPENDENTLY OF THE STORAGE ADDRESSES OF THE TRACES}
본 발명은 일반적으로 프로세싱 환경내에서 수행되는 트레이싱(tracing)에 관한 것이고, 보다 구체적으로는 트레이싱에 의해 생성되는 트레이스에 대한 핸들 을 정의하는 것에 관한 것이다.
프로세싱 환경에서 트레이싱이 수행되면, 일 이상의 트레이스가 생성된다. 각 트레이스는 하나 이상의 연속적으로 실행되는 명령어들을 포함한다. 트레이스에 포함된 명령어들은 트레이싱 함수의 시작 및 종료 시각 사이에서 실행되는 명령어들이다. 심볼/모듈 기반 방법 및 트레이스-기반 방법을 포함하는 상이한 유형의 트레이싱 방법들이 있다. 트레이스-기반 방법은 심볼/모듈 기반 방법과 대조적으로 프로그램 모듈 경계에 독립적으로 정의된다. 트레이스-기반 방법으로 생성된 시퀀스는 트루 프로그램 흐름이 명령어의 시퀀스에서 계층적으로 표시되기 때문에 전형적인 심볼/모듈 기반 방법에 비해 탁월한 이점이 있다. 트레이스-기반 방법에서는 옵티마이저의 범위가 확장되어 보다 광범위한 기회를 제공한다.
트레이스가 프로세싱 환경에서 최적화를 제공하는 데 있어 도움을 주지만, 트레이스에 대해 별개의(distinct) 식별 핸들을 생성하는 데에 있어서는 본래 어려움이 있다. 통상적으로, 트레이스를 식별하는 데에 이용되는 핸들을 생성하기 위해 메모리 위치 관련 정보가 이용된다. 그러나, 이는 메모리 위치가 동적인 경우에는 문제가 있다.
위의 설명을 기초로 하여 향상된 트레이스 식별 기능에 대한 필요성이 제기된다. 특히, 메모리내에서 트레이스가 존재하는 위치와 무관하게 트레이스를 식별하는 핸들 생성 기능이 필요하다.
청구항 1항에 따른 방법에 의해서 종래 기술의 단점들이 극복되며 추가의 이점들이 제공된다.
본 발명은 또한 대응 시스템 및 컴퓨터 프로그램을 제공한다.
본 발명의 방법에 의해 추가의 특징 및 이점들이 달성된다. 본 발명의 다른 실시예 및 양태는 본 명세서에서 상세히 설명되어 있으며 청구된 발명의 일부로서 간주된다.
도 1은 본 발명의 일 이상의 양태를 포함하고 이용하는 프로세싱 환경의 일 실시예를 도시한다.
도 2는 본 발명의 일 이상의 양태에 따른, 도 1의 메모리의 일 실시예의 상 세도를 도시한다.
도 3은 본 발명의 양태에 따른, 도 2의 에뮬레이터의 JIT 컴파일러(Just-In-Time compiler)의 일 실시예의 상세도를 도시한다.
도 4는 본 발명의 일 양태에 따른, 트레이스 핸들 정의와 연관된 로직의 일 실시예를 도시한다.
도 5는 본 발명의 일 양태에 따른, 트레이스 핸들 이용과 연관된 로직의 일 실시예를 도시한다.
도 6은 본 발명의 일 이상의 양태를 포함하는 컴퓨터 프로그램 제품의 일 실시예를 도시한다.
본 발명의 일 이상의 양태는 본 명세서의 말미의 청구의 범위에서 예로서 특정적으로 나타내고 명백히 청구되어 있다. 본 발명의 전술한 목적, 특징 및 이점 및 다른 목적, 특징 및 이점들은 다음 상세한 설명과 함께 첨부 도면을 참조하면 명확해질 것이다.
본 발명의 일 양태에 따라 메모리에 무관한 트레이스 핸들 정의 기능이 제공된다. 특히, 트레이스 핸들은 트레이스에 대하여 메모리내에서 그 트레이스가 존재하는 위치에 의존하지 않게 정의된다. 그 대신, 핸들은 트레이스의 콘텐트를 기초로 한다. 이는, 트레이스가 정의되는 애플리케이션을 다수 실행하더라도 핸들이 성공적으로 이용될 수 있게 한다.
일 예로서, 애플리케이션은 에뮬레이터이다. 에뮬레이터는 에뮬레이트되는 명령어들을 트레이싱하는 트레이싱 함수(예를 들어, 레코딩 루틴)를 포함한다. 먼저 트레이싱 함수는 에뮬레이터가 시작되면 시작되고, 선정된 지점, 예를 들어 브랜치에서 턴 오프된다. 그 시간 동안 실행되는 명령어 세트를 트레이스라 한다. 브랜치에서, 또 다른 트레이스가 시작되어 또 다른 명령어 세트 등을 수집할 수도 있다. 에뮬레이터의 실행 중에 하나 이상의 트레이스가 제공된다. 트레이스의 명령어 시퀀스는 트레이싱되는 애플리케이션과 통신하는 코드를 통해서뿐만 아니라 사용자 애플리케이션 및 운영체제를 통해서와 같이 서로 다른 코드 경계를 가로지르는 명령어들을 포함할 수도 있다.
도 1을 참조하여 본 발명의 일 이상의 양태를 포함하고 이용하기 위한 프로세싱 환경의 일 실시예를 설명한다. 이 예에서, 프로세싱 환경(100)은 네이티브 아키텍쳐(native architecture)라고도 하는 일 아키텍쳐를 기초로 하지만, 게스트 아키텍쳐라고도 하는 또 다른 아키텍쳐를 에뮬레이트한다. 예로서, 네이티브 아키텍쳐는 뉴욕주 아몬크에 소재하는 IBM(International Business Machines Corporation)사의 Power4 또는 PowerPC® 또는 Intel사의 Intel® 아키텍쳐이고, 게스트 아키텍쳐는 또한 뉴욕주 아몬크에 소재하는 IBM사의 z/아키텍쳐®이다. z/아키텍쳐®의 양태들은 본 명세서에서 그 전체가 참조로서 포함되는 2005년 9월 IBM 출판 번호 제 SA22-7832-04의 "z/아키텍쳐 동작 원리"에 기술되어 있다.
프로세싱 환경(100)은 예를 들어 네이티브 프로세서(102)(예를 들면, 예컨대 버스(108)를 통해 서로 결합되어 있는 중앙 처리 장치(CPU)), 메모리(104)(예를 들어, 메인 메모리) 및 일 이상의 입/출력(I/O) 디바이스(106))을 포함한다. 예로서, 프로세서(102)는 뉴욕주 아몬크에 소재하는 IBM사의 pSeries®의 일부이다. IBM®, pSires® Power PC® 및 z/아키텍쳐®는 미국 뉴욕주 아몬크에 소재하는 IBM사의 등록 상표이다. Intel®은 Intel사의 등록 상표이다. 본 명세서에서 이용된 다른 명칭들은 등록 상표, 상표 또는 IBM사 또는 기타 회사의 제품 명칭일 수 있다.
네이티브 중앙 처리 장치(102)는 환경내에서 프로세싱 중에 이용되는 일 이상의 네이티브 레지스터(110), 예를 들어, 일 이상의 범용 레지스터 및/또는 일 이상의 특수 레지스터를 포함한다. 이들 레지스터는 임의의 특정 시점에 그 환경의 상태를 나타내는 정보를 포함한다.
또한, 네이티브 정보 처리 장치(102)는 메모리(104)에 저장되어 있는 명령어 및 코드를 실행한다. 일 특정 예로, 중앙 처리 장치는 메모리(104)에 저장되어 있는 에뮬레이터 코드(112)를 실행시킨다. 이들 코드는 일 아키텍쳐로 구성된 프로세싱 환경이 또 다른 아키텍쳐를 에뮬레이트할 수 있게 한다. 예를 들어, 에뮬레이터 코드(112)는 z/아키텍쳐®가 아닌 다른 아키텍쳐, 예를 들어, pSeries® 서버를 기초로 하는 머신이 z/아키텍쳐®를 에뮬레이트하고 z/아키텍쳐®를 기초로 하여 전개되는 소프트웨어 및 명령어들을 실행할 수 있게 한다.
에뮬레이터 코드(112)(또는, 에뮬레이터)에 관련된 추가의 상세는 도 2를 참조하여 설명한다. 일 예에서, 에뮬레이터 코드(112)는 메모리(104)로부터 일 이상의 게스트 명령어(202)를 획득하고 일 이상의 획득된 명령어에 대하여 선택적으로 로컬 버퍼링을 제공하는 명령어 페치 루틴(instruction feching routine : 200)을 포함한다. 게스트 명령어(202)는 네이티브 CPU(102)가 아닌 다른 아키텍쳐로 전개되어 실행되는 소프트웨어 명령어들(예를 들어, 머신 명령어들)을 포함한다. 예를 들어, 게스트 명령어(202)는 z/아키텍쳐® 프로세서상에서 실행되도록 설계될 수도 있으나, 그 대신 예컨대 pSeries® 서버일 수도 있는 네이티브 CPU(102)상에서 에뮬레이트될 수도 있다.
에뮬레이터(112)는 또한 획득한 게스트 명령어의 유형을 결정하고 그 게스트 명령어를 일 이상의 대응 네이티브 명령어(208)로 번역하는 명령어 번역 루틴(204)을 포함한다. 이러한 번역은 예를 들어 게스트 명령어에 의해 수행될 함수를 식별하고 그 함수를 수행하는 네이티브 명령어를 선택하는 것을 포함한다.
또한, 에뮬레이터(112)는 네이티브 명령어들이 실행되게 하는 에뮬레이션 제어 루틴(emulation control routine : 206)을 포함한다. 에뮬레이션 제어 루틴(206)은 네이티브 CPU(102)가, 이전에 획득한 하나 이상의 게스트 명령어를 에뮬레이트하는 네이티브 명령어의 루틴을 실행하게 하고, 이러한 실행 말미에서, 명령어 페치 루틴이 다음 게스트 명령어(들) 획득을 에뮬레이트하게 할 수도 있다. 네이티브 명령어(208)의 실행은 메모리(104)로부터 레지스터내로 데이터를 로딩하는 것; 레지스터로부터 메모리로 데이터를 다시 저장하는 것; 또는 번역 루틴에 의해 결정되는 몇몇 형태의 수학적 또는 논리 연산을 수행하는 것을 포함할 수도 있다.
예를 들어 소프트웨어로 구현되는 각 루틴은 메모리에 저장되어 네이티브 중앙 처리 장치(102)에 의해 실행된다. 다른 예에서, 일 이상의 루틴 또는 연산들은 펌웨어, 하드웨어, 소프트웨어 또는 이들의 어떤 조합으로 구현된다. 에뮬레이트되는 게스트 프로세서의 레지스터는 네이티브 CPU의 레지스터(110)를 이용하여 또는 메모리(104)내의 위치를 이용하여 에뮬레이트될 수도 있다. 일 실시예에서, 게스트 명령어(202), 네이티브 명령어(208) 및 에뮬레이트 코드(112)는 동일한 메모리에 존재할 수도 있고, 또는 상이한 메모리 디바이스들간에 분산 배치될 수도 있다.
일 실시예에서 페치 및 제어 루틴이 처리한 명령어의 축적은 JIT 컴파일러(210)에게 제공된다. JIT 컴파일러는 명령어를 검사하고, 리던던시(redundancies)를 제거할 기회를 찾고 에뮬레이터가 실행 중인 네이티브 플랫폼상에서 매칭 명령어 시퀀스를 생성하는 동적 컴파일러이다. 에뮬레이터는 한 번에 하나의 명령어에 대한 가시성을 갖지만, JIT 컴파일러는 명령어들의 시퀀스에 대한 가시성을 갖는다. JIT 컴파일러가 명령어 시퀀스에 대한 가시성을 가지므로, 그 명령어 시퀀스내에서 리던던시를 찾아 제거를 시도할 수 있다. JIT 컴파일러의 일 예는 뉴욕주 아몬크에 소재하는 IBM사의 JAVATM JIT 컴파일러이다. JAVA는 캘리포니아 산타클라라에 소재하는 Sun Microsystem사의 상표이다.
JAVA JIT 컴파일러에 대해서는 본 명세서에 그 전체가 참조로서 포함되어 있는 "Overview of the IBM Just-in-Time Compiler," T. Suganuma 등., Volume 39, Number 1, 2000, http://www.research.ibm.com/journal/sj/391/suganuma.html에 개괄되어 있다. JIT 컴파일러의 양태는 또한 예로서 각각 그 전체가 본 명세서에서 참조로서 포함되어 있는 "A Framework For Reducing Instruction Scheduling Overhead In Dynamic Compilers" V. Tang, J. Siu, A. Vasilevskiy, M. Mitran, Proceedings of the 2006; "A Dynamic Optimization Framework For A Java Just-In-Time Compiler," T. Suganuma, T. Yasue, M. Kawahito, H. Komatsu 및 T. Nakatani, ACM SIGPLAN, Volume 36, Issue 11, Novemer 2001; 및 "Memory Resource Management in VMware ESX Server," C.A. Waldspurger, In Proc. Fifth Symposium on Operating Systems Design and Implementation(OSDI '02), Dec. 2002에 기술되어 있다.
JIT 컴파일러는 또한 에뮬레이터가 제공하는 트레이스에 메모리 무관한 트레이스 핸들을 제공하는 기능을 포함한다. 예를 들어, 에뮬레이터는 연속적으로 실행되는 명령어들 세트를 추적하는 기록 루틴을 이용한다. 이러한 명령어 세트(즉, 트레이스)는 JIT 컴파일러에게 전달되고, JIT 컴파일러는 트레이스의 핸들을 생성한다. 이러한 핸들은 메모리 위치가 아닌 트레이스의 콘텐트를 기초로 한다. JIT 컴파일러의 이러한 특징은 도 3을 참조하여 설명한다.
도 3을 참조하면, JIT 컴파일러(300)는 입력으로서 명령어 트레이스(304)를 획득(예를 들어, 수신, 보유, 페치, 제공된 등)하고, 출력으로서 n-비트 키(306)를 제공하는 인코더(302), 예컨대 해시 인코더를 포함한다. 키는 예를 들면, 트레이스의 핸들로서 이용되는 128 비트 해시 코드이다. 이러한 핸들은 명령어 트레이스의 콘텐츠를 기초로 하고 메모리내에서의 트레이스의 위치에는 의존하지 않는다. 그러므로, 트레이스 핸들은 메모리와 무관하다.
트레이스 핸들을 생성하는 것과 관련된 다른 상세는 도 4를 참조하여 설명한다. 일 실시예에서 프로세싱 환경내에서 트레이싱이 시작(예를 들면, 에뮬레이터가 트레이싱)되어 트레이스가 생성되는데, 이 트레이스는 명령어들의 시퀀스를 포함한다. 명령어들의 시퀀스(즉, 또 다른 실시예에서 트레이스 또는 그 부분)는 단계(400)에서 인코더로 입력된다. 이 예에서 단계(402)에서 인코더가 입력 트레이스에 관해 해시 인코딩을 수행한다. 일 예로, 사용되는 해시 코드 함수는 MD5이며, 그 실시예는 본 명세서에 그 전체가 참조로서 포함되어 있는 "The MD5 Message-Digest Algorithm," R. Rivest, April 1992, http://www.ietf.org/rfc/rfc1221.txt에 기술되어 있다. 예로서 MD5가 제공되었으나, 여러 다른 해시 방법들도 이용될 수 있다. 해시 방법의 선택에 의해 2개의 다른 트레이스들이 동일한 키로 종료되는 확률이 결정된다. 그러나, MD5와 같은 알고리즘으로는 이러한 확률이 상당히 작으며 따라서 이 기능은 JIT와 같은 동적 컴파일러에서 이용될 수 있다.
단계(404)에서 해시 인코딩의 출력은 키이다. 이 특정 실시예에서, 키는 트레이스에 대한 식별자(즉, 핸들)인 128 비트 해시 코드이다. 이러한 예에서, 핸들은 128 비트를 포함하지만, 다른 실시예에서 핸들은 다른 길이일 수 있다.
트레이스 핸들로서 생성되어 사용되는 키는 메모리 위치를 기초로 하지 않고, 대신 트레이스 콘테트를 기초로 한다. 예로서, 인코더는 트레이스의 각 명령어(또는 선택된 명령어들)의 하나 이상의 비트를 선택하고 이들 키를 인코딩하여 핸들로서 이용되는 n-비트 키를 생성한다. 핸들이 메모리 위치를 기초로 하지 않 으므로, 핸들은 트레이스가 존재하는 메모리내의 위치와 무관하게 애플리케이션이 다수회 실행되어도 동일한 트레이스로 식별된다.
일 예에서 생성되는 트레이스 핸들은 애플리케이션(예를 들어, 에뮬레이터)의 후속 실행 중에 트레이스를 관찰하는 데에 이용된다. 예를 들어, 트레이스의 특정 예, my_T가 관찰된다고 가정하자. 트레이스는 인코딩되어 my_h_t를 생성한다. 그 후, 애플리케이션이 일 회이상 재실행되어 하나 이상의 트레이스를 생성한다. 이들 트레이스에 대해 핸들들이 생성되고, 이들 핸들의 탐색이 수행되어 my_h_t에 대한 매칭을 찾는다. 매칭된 핸들은 특정 트레이스를 식별한다. 이에 대해서는 도 5를 참조하여 더 설명한다.
도 5를 참조하면, 이 예에서 에뮬레이터는 일 회 이상 재시작되었다고 가정한다. 예를 들어, 에뮬레이터는 시작되었고, 하나 이상의 트레이스들이 생성되고, 그 후 문제가 탐지된다. 그 후, 에뮬레이터가 재시작된다. 단계(500)에서 이는 일 회 이상 발생하여 에뮬레이터의 각 실행에 대해 하나 이상의 트레이스들(예를 들어, T0, T1, T2)을 생성한다. 단계(502)에서 각 트레이스가 인코딩되어 각 트레이스에 대한 핸들을 생성한다. 예를 들어, 에뮬레이터 코드는 해시 함수 H를 이용하여 각 트레이스를 인코딩하고 예컨대:
H(T0) = h_t0
H(T1) = h_t1
...
H(Tn) = h_tn
를 산출한다.
이 예에서 에뮬레이터는 my_h_t로 식별된 트레이스에 대해 관찰 가능한 핸들을 제공하도록 지시받는다. 예를 들어, my_h_t가 식별한 명령어 시퀀스는 문제를 야기하거나 관심이 대상이 되는 것으로 간주된다. 따라서, 그 트레이스의 위치가 찾아진다. 그 트레이스의 메모리 위치는 알려져 있지 않으므로, 트레이스의 탐색이 수행된다. 탐색을 수행하기 위하여 트레이스의 명령어를 대신 트레이스의 핸들을 이용한다. 일 예에서, 탐색을 수행하는 데 있어서, 일 이상의 애플리케이션이 실행되는 도중에 생성된 핸들은 단계(504)에서 JIT에 의해 선택되고 단계(506)에서 주어진 핸들(예를 들어, my_h_t)과 비교된다. 질의(506) 단계에서 그 핸들들이 동일하지 않으면, 질의(510) 단계에서 비교할 추가 핸들이 있는지 판정한다. 추가 핸들이 있으면, 단계(504)에서 프로세싱은 "생성된 핸들을 선택"으로 계속된다. 그러나, 비교할 핸들이 더 이상 없으면, 단계(512)에서 프로세싱은 종료한다.
질의(508) 단계로 돌아가, 비교에 의해 매칭이 이루어지면, 단계(514)에서 관심의 대상이 되는 특정 트레이스가 식별된다. 일단 시퀀스가 발견되면, 어떤 방식이 바람직하든 그 시퀀스가 사용될 수 있다. 예를 들어, 그 트레이스의 JIT가 불가능하고, 그 트레이스에 대해 최적화 등이 가능할 수 있다. 선택엔 제한이 없다.
이상, 메모리에 무관한 트레이스 핸들 정의 및 사용 기능에 대하여 상세히 설명하였다. 일 예로서, 해시 인코딩 기능은 트레이스라 하는 연속적으로 실행되는 명령어들의 시퀀스를 n-비트 폭 핸들로 변환한다. 인코딩이 명령어 시퀀스의 메모리 위치를 고려하지 않으므로, 인코딩은 메모리에 무관하다. 이로써 본래 명령어 시퀀스보다 다루기 훨씬 용이한 핸들이 정의될 수 있게 된다. 특히, 관심 있는 최초 명령어 시퀀스가 전체 명령어 시퀀스를 대신 핸들을 이용하여서 다시 캡쳐될 수 있다.
본 발명의 일 이상의 양태는 예를 들어 컴퓨터 이용 가능 매체를 갖는 제조 물품(예컨대, 일 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 매체는 예를 들어 본 발명의 기능들을 제공하고 용이하게 진행하기 위하여 컴퓨터 판독 가능 프로그램 코드 수단 또는 로직(예를 들어, 명령어, 코드, 커맨드 등)을 갖는다. 제조 물품은 컴퓨터 시스템의 일부에 포함되거나 별도로 판매될 수 있다.
본 발명의 일 이상의 양태를 포함하는 제조 물품 또는 컴퓨터 프로그램 제품의 일 예를 도 6을 참조하여 설명한다. 컴퓨터 프로그램 제품(600)은 예를 들어 본 발명의 일 이상의 양태를 제공하고 용이하게 진행하기 위하여 컴퓨터 판독 가능 프로그램 코드 수단 또는 로직(604)을 자체에 저장하는 일 이상의 컴퓨터 이용 가능 매체(602)를 포함한다. 매체는 전자, 자기, 공학, 전자기, 적외선, 또는 반도체 시스템(또는 장치 또는 디바이스) 또는 전파 매체일 수 있다. 컴퓨터 판독 가능 매체의 예에는 반도체 또는 고체 메모리, 마그네틱 테이프, 탈착 가능 컴퓨터 디스켓, 랜덤 액세스 메모리(RAM), 랜덤 온리 메모리(ROM), 리지드 마그네틱 디스크 및 광학 디스크가 있다. 광학 디스크의 예에는 소형 디스크 ROM(CD-ROM), 소형 디스크 판독/기록(CD R/W) 및 DVD가 있다.
하나 이상의 컴퓨터 판독 가능 컴퓨터 코드 수단 또는 로직이 정의하는 하나 이상의 상호관련 모듈의 로직 어셈블리 또는 프로그램 명령어의 시퀀스가 본 발명의 일 이상의 양태를 수행하라는 지시를 한다.
유리하게, 메모리에 무관한 트레이스 핸들 정의 기능이 제공된다. 이러한 기능은 트레이스가 존재하는 메모리내의 위치와 상관없이 고유한 트레이스 핸들이 생성될 수 있게 한다. 명령어의 임의 길이 시퀀스는 매핑 함수를 통해서 생성된 고정 길이 표시로 나타내어진다. 예를 들어, 1000개 명령어 길이인 시퀀스는 128 비트 바이너리 패턴으로 표시된다. 따라서, 애플리케이션이 재실행되어 그 1000개 명령어들이 관찰되면, 그 시퀀스의 위치를 찾는 데에는 1000개 명령어 전체 대신에 128 비트 패턴이 이용된다.
유리하게, 이러한 기능은 JIT와 같은 동적 컴파일러가 애플리케이션의 경계들을 아우르며 트레이스를 라벨링하는 데에 유용하다. 핸들은 애플리케이션의 후속 실행에서 트레이스의 위치를 찾는 데에 이용된다.
위에서 다양한 실시예를 설명하였으나, 이들은 예시일뿐이다. 예를 들어, 프로세싱 환경은 Power4, PowerPC® 또는 인텔® 이 아닌 다른 아키텍쳐를 기초로 한 처리 장치를 포함할 수 있다. 또한, pSeries®가 아닌 서버가 본 발명의 일 이상의 양태를 포함하고 이용할 수도 있다. 또한 프로세싱 환경은 z/아키텍쳐®가 아닌 다른 환경을 에뮬레이트할 수도 있다. 또한, 다양한 에뮬레이터들이 사용될 수도 있다. 에뮬레이터는 다양한 회사로부터 상업적으로 입수가능한 것으로 제공된다. 또한 프로세싱 환경은 에뮬레이터 코드를 포함할 필요가 없다. 다수의 다른 유형의 프로세싱 환경은 본 발명의 하나 이상의 양태를 포함 및/또는 사용할 수 있다.
또한, 인코딩 함수의 예를 제공하였으나, 해시 및 비 해시 함수 등 다수의 다른 인코딩 방법이 사용될 수도 있다. MD5는 단지 예로서 제공된다.
또한, 에뮬레이터는 애플리케이션의 일 예에 지나지 않는다. 다른 유형의 애플리케이션이 트레이스될 수 있고, 이들 트레이스에 대한 트레이스 핸들이 바람직할 수도 있다. 또한, 애플리케이션이 여러 이유로 재시작될 수 있고, 또는 트레이스는 여러 이유로 관찰될 수 있다. 본 명세서에서 제공된 예는 예시일 뿐이다.
더욱이 일 이상의 실시예에서, 프로그램 코드를 저장 및/또는 실행하는 데에 적합하며, 시스템 버스를 통해 메모리 엘리먼트에 직접 또는 간접적으로 결합되는 적어도 하나의 프로세서를 포함하는 데이터 처리 시스템이 이용될 수 있다. 메모리 엘리먼트는 예를 들어 프로그램 코드의 실제 실행 중에 사용되는 로컬 메모리, 벌크 저장소, 및 실행 중에 벌크 저장소로부터 코드가 검색되어야 하는 횟수를 줄이기 위하여 적어도 일부의 프로그램 코드를 임시로 저장하는 캐시 메모리를 포함한다. (키보드, 디스플레이, 포인팅 디바이스, DASD, 테이프, CD, DVD, 썸 드라이브 및 기타 메모리 매체 등을 포함하는) 입출력 디바이스 또는 I/O 디바이스가 중재 I/O 제어기를 통해서 또는 직접 시스템에 결합될 수 있다. 네트워크 어댑터도 시스템에 결합되어 데이터 처리 시스템이 사설 또는 공용 네트워크를 통해서 다른 데이터 처리 시스템에 또는 원격 프린터 또는 저장 디바이스에 결합될 수 있게 한다. 모뎀, 케이블 모뎀 및 이더넷 카드는 이용 가능한 네트워크 어댑터 유형의 일 예일 뿐이다.
본 명세서에서 사용하는 용어 "획득"이란, 페치, 수신, 보유, 제공, 제공됨, 생성, 전개 등을 포함하는 의미이며, 이제 제한되지 않는다.
본 발명의 일 이상의 양태의 기능들은 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합으로 구현될 수 있다. 본 발명의 기능들을 수행하기 위하여 머신이 실행할 수 있는 명령어들의 적어도 하나의 프로그램을 구현하는 적어도 하나의 머신 판독 가능한 프로그램 저장 디바이스가 제공될 수 있다.
본 명세서에서 도시한 순서도는 예시일 뿐이다. 본 명세서에 도시한 이러한 도면 또는 단계(또는 동작들)에는 본 발명의 범주로부터 벗어남이 없이 다양한 변경이 이루어질 수 있다. 예를 들어, 단계들은 상이한 순서로 수행될 수 있고, 또는 단계들은 추가, 삭제 또는 수정될 수도 있다. 이들 변경 모두는 청구된 본 발명의 일부로서 간주된다.
본 명세서에서 실시예를 상세히 설명하고 도시하였으나, 당업자에게는 본 발명의 사상으로부터 벗어남이 없이 다양한 변경, 추가, 대체 등이 이루어질 수 있으며, 따라서 이들이 다음 청구의 범위에 정의된 본 발명의 범주 내로 간주될 수 있음이 자명할 것이다.

Claims (7)

  1. 프로세싱 환경의 트레이스에 대한 핸들을 정의하는 방법에 있어서,
    상기 트레이스의 적어도 일부를 획득하는 단계; 및
    상기 트레이스의 콘텐트를 기초로 하여 키를 생성하는 단계를 포함하며,
    상기 키는 상기 트레이스에 대한 핸들이고, 상기 핸들은 메모리내에서 상기 트레이스가 존재하는 위치와 상관없이 상기 트레이스와 연관된 애플리케이션의 다수 회 실행에 걸쳐서 상기 트레이스를 식별하는, 핸들 정의 방법.
  2. 제 1 항에 있어서,
    상기 애플리케이션은 상기 프로세싱 환경의 에뮬레이터를 포함하는, 핸들 정의 방법.
  3. 제 1 항에 있어서,
    상기 생성 단계는 상기 키를 생성하기 위하여 해시 코드 함수를 이용하는 것을 포함하는, 핸들 정의 방법.
  4. 제 1 항에 있어서,
    상기 생성 단계는 인코더가 상기 트레이스를 정의하는 명령어의 시퀀스를 획득하는 단계; 및
    상기 인코더가 상기 명령어의 시퀀스 중 하나 이상의 명령어의 적어도 일부를 인코딩하여 상기 키를 제공하는 단계를 포함하는, 핸들 정의 방법.
  5. 제 1 항에 있어서,
    상기 트레이스와 연관된 애플리케이션의 일 회 이상의 후속 실행에서 상기 트레이스를 식별하기 위한 핸들을 채용하는 단계를 더 포함하며,
    상기 채용 단계는,
    상기 애플리케이션을 일 회 이상 실행함으로써 제공되는 하나 이상의 트레이스에 대해 생성되는 하나 이상의 생성 핸들 중에서 하나의 생성 핸들을 선택하는 단계; 및
    상기 생성 핸들을 그 핸들과 비교하는 단계로서, 상기 생성 핸들과 그 핸들의 매칭에 의해 상기 트레이스가 식별되는 단계를 포함하는, 핸들 정의 방법.
  6. 핸들 정의 시스템에 있어서,
    제 1 항 내지 제 5 항 중 어느 한 항에 따른 핸들 정의 방법의 모든 단계들 을 수행하기 위한 수단을 포함하는 시스템.
  7. 컴퓨터 판독 가능 매체에 있어서,
    컴퓨터 시스템상에서 실행되어 제 1 항 내지 제 5 항 중 어느 한 항에 따른 핸들 정의 방법의 모든 단계들을 수행하기 위한 명령어를 포함하는 컴퓨터 판독 가능 매체.
KR1020097012621A 2007-01-23 2008-01-16 트레이스의 저장 어드레스에 독립적인 트레이스 핸들 정의 방법 KR101107824B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/625,898 2007-01-23
US11/625,898 US7617493B2 (en) 2007-01-23 2007-01-23 Defining memory indifferent trace handles
PCT/EP2008/050441 WO2008090067A1 (en) 2007-01-23 2008-01-16 Defining trace handles independently of the storage addresses of the traces

Publications (2)

Publication Number Publication Date
KR20090113251A true KR20090113251A (ko) 2009-10-29
KR101107824B1 KR101107824B1 (ko) 2012-01-31

Family

ID=39273215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097012621A KR101107824B1 (ko) 2007-01-23 2008-01-16 트레이스의 저장 어드레스에 독립적인 트레이스 핸들 정의 방법

Country Status (7)

Country Link
US (2) US7617493B2 (ko)
JP (1) JP5349328B2 (ko)
KR (1) KR101107824B1 (ko)
CN (1) CN101583927B (ko)
CA (1) CA2675556C (ko)
TW (1) TWI406174B (ko)
WO (1) WO2008090067A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7805708B2 (en) * 2005-05-13 2010-09-28 Texas Instruments Incorporated Automatic tool to eliminate conflict cache misses
CN101299849B (zh) * 2008-04-25 2010-05-12 中兴通讯股份有限公司 一种WiMAX终端及其启动方法
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) * 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8364461B2 (en) * 2009-11-09 2013-01-29 International Business Machines Corporation Reusing invalidated traces in a system emulator
US8522222B2 (en) * 2010-06-21 2013-08-27 Microsoft Corporation Tracing just-in-time compilation with pointers to local variables
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
WO2012103209A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103373A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Variable caching structure for managing physical storage
US9063760B2 (en) * 2011-10-13 2015-06-23 International Business Machines Corporation Employing native routines instead of emulated routines in an application being emulated
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
EP2972798B1 (en) 2013-03-15 2020-06-17 Intel Corporation Method and apparatus for guest return address stack emulation supporting speculation
JP6991204B2 (ja) * 2016-10-11 2022-01-12 グリーン ヒルズ ソフトウェア,インコーポレイテッド トレースデータの要約及び視覚化のためのシステム及び方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04219821A (ja) * 1990-12-20 1992-08-10 Fujitsu Ltd プログラムモジュールの履歴管理装置
JPH10334099A (ja) * 1996-12-04 1998-12-18 Kiyoaki Kobayashi 検索方法
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US7197768B2 (en) * 2001-07-09 2007-03-27 Advanced Micro Devices, Inc. Software modem for communicating data using encrypted data and unencrypted control codes
US7096353B2 (en) * 2001-07-09 2006-08-22 Advanced Micro Devices, Inc. Software modem with privileged mode decryption of control codes
JP2003076578A (ja) * 2001-09-03 2003-03-14 Mitsubishi Electric Corp マイクロコンピュータ及びデバッグシステム並びにトレース情報収集方法
US20030093649A1 (en) 2001-11-14 2003-05-15 Ronald Hilton Flexible caching of translated code under emulation
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
JP2005182470A (ja) * 2003-12-19 2005-07-07 Matsushita Electric Ind Co Ltd メモリ割り当て装置

Also Published As

Publication number Publication date
JP2010517128A (ja) 2010-05-20
KR101107824B1 (ko) 2012-01-31
TWI406174B (zh) 2013-08-21
JP5349328B2 (ja) 2013-11-20
CA2675556A1 (en) 2008-07-31
CA2675556C (en) 2016-01-05
US7617493B2 (en) 2009-11-10
CN101583927A (zh) 2009-11-18
WO2008090067A1 (en) 2008-07-31
US20090259831A1 (en) 2009-10-15
TW200841242A (en) 2008-10-16
US20080177989A1 (en) 2008-07-24
CN101583927B (zh) 2011-12-07
US7930686B2 (en) 2011-04-19

Similar Documents

Publication Publication Date Title
KR101107824B1 (ko) 트레이스의 저장 어드레스에 독립적인 트레이스 핸들 정의 방법
US7882499B2 (en) Caching dynamically compiled code to storage
US8819647B2 (en) Performance improvements for nested virtual machines
EP2483783B1 (en) Facilitating memory accesses
KR101081090B1 (ko) 명령어 스트림의 효율적인 에뮬레이션을 가능하게 하기 위한 레지스터 기반의 명령어 최적화
US9063760B2 (en) Employing native routines instead of emulated routines in an application being emulated
US8875114B2 (en) Employing identifiers provided by an operating system of a processing environment to optimize the processing environment
US20130283090A1 (en) Monitoring and resolving deadlocks, contention, runaway cpu and other virtual machine production issues
US20140108770A1 (en) Identifying load-hit-store conflicts
US8893100B2 (en) Return address optimisation for a dynamic code translator
JP6951442B2 (ja) シブリング・コール処理のためのコンピュータ・プログラム製品、コンピュータ・システムおよびコンピュータによって実施される方法
WO2014185165A1 (ja) 情報処理装置、および、情報処理方法
JP2022104872A (ja) バッファ保護における境界情報アクセスを提供する方法、システム、およびコンピュータ・プログラム
US8490073B2 (en) Controlling tracing within compiled code
JP2022542007A (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
JP6770335B2 (ja) 解析装置及びプログラム
Wang et al. SWIFT: Decoupled System-Wide Information Flow Tracking and its Optimizations.
US11341023B2 (en) Apparatus, method, and non-transitory computer-readable medium for analyzing trace information
JP2021009443A (ja) 情報処理装置及びコンパイラプログラム
US20080127180A1 (en) Operating system automated application porting tool
Ince et al. Profile-driven selective program loading

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151228

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171227

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 8