KR20110070468A - 인스트루먼테이션 실행 장치 및 방법 - Google Patents

인스트루먼테이션 실행 장치 및 방법 Download PDF

Info

Publication number
KR20110070468A
KR20110070468A KR1020090127298A KR20090127298A KR20110070468A KR 20110070468 A KR20110070468 A KR 20110070468A KR 1020090127298 A KR1020090127298 A KR 1020090127298A KR 20090127298 A KR20090127298 A KR 20090127298A KR 20110070468 A KR20110070468 A KR 20110070468A
Authority
KR
South Korea
Prior art keywords
instrumentation
instruction
code
address
bit
Prior art date
Application number
KR1020090127298A
Other languages
English (en)
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 삼성전자주식회사
Priority to KR1020090127298A priority Critical patent/KR20110070468A/ko
Priority to US12/856,896 priority patent/US20110154299A1/en
Publication of KR20110070468A publication Critical patent/KR20110070468A/ko

Links

Images

Classifications

    • 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
    • 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/3644Software debugging by instrumenting at runtime
    • 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
    • G06F11/348Circuit details, i.e. tracer hardware
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3409Recording 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 for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Abstract

하드웨어의 도움을 받아 실행 프로그램에 대하여 원하는 동작을 추가하여 실행할 수 있는 인스트루먼테이션 실행 장치 및 방법이 제공된다. 인스트루먼테이션을 지원하는 프로세서는, 인스트루먼테이션이 실행되어야 하는 명령어에 인스투먼테이션 비트를 설정하고, 인스트루먼테이션 코드 실행을 위하여 분기할 메모리의 주소를 설정하고, 분기할 메모리의 주소를 저장한다. 프로세서는 페치된 명령어에 인스트루먼테이션 비트가 설정되어 있으면, 설정되어 레지스터에 저장된 주소로 분기하여 인스트루먼테이션 코드를 실행한다.
인스트루먼테이션, 명령어, 프로세서, 레지스터, 프로그램

Description

인스트루먼테이션 실행 장치 및 방법{Apparatus for executing instrumentation and method thereof}
데이터 처리 시스템에 관한 것으로, 더욱 상세하게는, 애플리케이션의 실행 과정에 대한 정보를 모니터링하는 인스트루먼테이션 실행 장치 및 방법에 관한 것이다.
프로그램은 프로그래머의 설계의 실수나 미처 생각하지 못한 변수에 의해서, 프로그래머의 의도와 다르게 비정상적으로 동작하게 되는 경우가 있다. 이러한 비정상적이거나 의도치 않은 동작을 분석하기 위해서는 프로그램 코드가 실행되면서, 무슨 동작이 일어나는지 알아낼 필요가 있다. 이와 같이, 실행되는 프로그램의 동작을 분석하는 것을 프로파일링(profiling)이라고 부른다. 프로파일링은 여러가지 방법으로 구현할 수 있는데, 인스트루먼테이션(instrumentation)을 이용하는 방법이 많이 사용된다.
인스트루먼테이션 방법 중 바이너리 인스트루먼테이션은 인스트루먼테이션이 실행될 애플리케이션의 컴파일된 바이너리 코드가 인스트루먼테이션 코드로 수정되어, 인스트루먼테이션 코드가 애플리케이션의 일부로서 실행되는 방법이다. 인스 트루먼테이션 코드는 애플리케이션의 실행 동안 발생하는 동작들 또는 이벤트들에 대한 정보를 얻기 위해 이용되는 명령어들의 세트이다. 명령어들의 세트는 하나 이상의 명령어를 의미한다.
바이너리 인스트루먼테이션 방법은 소스 코드를 필요로 하지 않고, 컴파일하는 시간이 들지 않는 이점이 있지만, 원하는 동작이 실행되도록 애플리케이션의 컴파일된 바이너리 코드를 수정하기 위해서, 프로그램의 코드를 분석하고 재배치하는데, 많은 메모리와 시간이 소요된다. 일예로, 원래의 프로그램의 코드가 다른 주소로 재배치된 경우, 재배치된 코드들로 접근하는 다른 명령어가 있는 경우에는, 다른 명령어가 재배치된 코드에 접근하도록 접근 주소를 변경해야 하는 등 많은 연산이 필요하다. 또한, 인스트루먼테이션의 대상이 되는 명령어에 조건부 플래그(conditional flag)가 존재하는 경우에, 실제로 실행되지 않을 명령어에 대해서도 인스트루먼테이션 코드를 실행하게 되어, 인스트루먼테이션 결과가 부정확해질 수도 있다.
하드웨어의 도움을 받아 실행 프로그램에 대하여 원하는 동작을 추가하여 실행할 수 있는 인스트루먼테이션 장치 및 방법이 제공된다.
일 측면에 따른 인스트루먼테이션 실행 장치는 코드 변환부, 레지스터 및 제어부를 포함할 수 있다. 코드 변환부는 인스트루먼테이션이 실행되어야 하는 명령 어에 대하여 인스트루먼테이션이 실행될 명령어임을 나타내도록 인스트루먼테이션 비트를 설정하고, 인스트루먼테이션 코드 실행을 위하여 분기할 메모리의 주소를 설정한다. 레지스터는 분기할 메모리의 주소를 저장한다. 제어부는, 명령어를 페치하고, 페치된 명령어에 인스트루먼테이션 비트가 설정되어 있으면, 분기할 메모리의 주소로 분기하여 인스트루먼테이션 코드를 실행한다.
레지스터는, 인스트루먼테이션 비트가 설정된 명령어의 주소를 더 저장할 수 있다. 인스트루먼테이션 코드 실행이 종료된 경우, 제어부는 인스트루먼테이션 비트가 설정된 명령어의 주소를 이용하여, 인스트루먼테이션 코드로 분기하기 전의 인스트루먼테이션 비트가 설정된 명령어 실행을 계속할 수 있다.
레지스터는, 인스트루먼테이션 코드 실행시 이용할 스택 포인터를 더 저장할 수 있다.
레지스터는, 분기전에 실행되었던 명령어 실행 과정에서 발생된 정보의 주소를 더 저장할 수 있다. 인스트루먼테이션 코드 실행이 종료된 경우, 제어부는 명령어 실행 과정에서 발생된 정보의 주소를 이용하여, 인스트루먼테이션 코드로 분기하기 전의 명령어 실행 과정에서 발생된 정보를 복원할 수 있다.
제어부는, 페치된 명령어가 컨디션 비트 및 인스트루먼테이션 비트를 포함하는 경우, 컨디션 비트가 명령어를 실행할 것을 나타내고, 인스트루먼테이션 비트가 인스트루먼테이션을 실행할 것을 나타내는 경우에, 인스트루먼테이션 코드를 실행할 수 있다.
다른 측면에 따른 인스트루먼테이션 실행 방법은, 인스트루먼테이션이 실행 되어야 하는 명령어에 인스트루먼테이션이 실행될 명령어임을 나타내도록 인스투먼테이션 비트를 설정하는 동작과, 인스트루먼테이션 코드 실행을 위하여 분기할 메모리의 주소를 설정하는 동작과, 페치된 명령어에 인스트루먼테이션 비트가 설정되어 있으면, 분기할 메모리 주소로 분기하여 인스트루먼테이션 코드를 실행하는 동작을 포함한다.
인스트루먼테이션시 그 속도를 빠르게 하며, 메모리 사용량을 줄이고 정확도를 향상시킬 수 있다. 바이너리 인스트루먼테이션을 이용하여 성능을 측정하고자 할 때 소요되는 준비 시간과 그 과정에 필요한 메모리의 양을 줄일 수 있다. 바이너리 인스트루먼테이션에 의한 성능 측정 결과보다 더욱 정교한 결과를 얻을 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 인스트루먼테이션 실행 장치의 구성의 일 예를 나타내는 도면이다.
인스트루먼테이션 실행 장치(100)는 프로세서(110) 및 메모리(120)를 포함할 수 있다.
프로세서(110)는 메모리(120)에 저장된 데이터를 이용하여 명령어를 실행한다. 메모리(120)는 프로그램 코드를 프로세서(110)가 처리가능한 형태로 생성하는데 이용되는 인스트럭션 세트 아키텍처(Instruction Set Architecture, ISA) 인코딩 맵, 실행될 프로그램 코드 등을 포함할 수 있다. 메모리(120)에 저장된 프로그램 코드는 하드 디스크 또는 다른 메모리로부터 프로세서(110)에 의해 메모리(120)로 로딩된 프로그램 코드일 수 있다.
프로세서(110)는 코드 변환부(112), 제어부(114) 및 레지스터(116)를 포함할 수 있다. 코드 변환부(112) 및 제어부(114)는 설명의 편의를 위해 구분하였으나, 통합되어 구성될 수 있으며, 제어부(114)는 기능에 따라 여러 개의 기능 블록으로 분리될 수 있는 등, 프로세서(110)의 구성은 다양하게 변형될 수 있다.
코드 변환부(112)는 메모리(120)로부터 입력되는 프로그램을 ISA 인코딩 맵을 참고하여, 제어부(114)에서 처리가능한 형태의 명령어로 변환하는 컴파일링을 실행할 수 있다. 변환된 명령어는 메모리(120)의 특정 영역(도시되지 않음)에 저장되고, 제어부(114)는 메모리(120)의 특정 영역에 저장된 변환된 명령어를 페치하여 명령어를 실행할 수 있다.
일 실시예에 따르면, ISA 인코딩 맵에서 인스트루먼테이션이 실행되어야 하는 명령어 구조는 인스트루먼테이션의 실행을 나타내는 인스트루먼테이션 비트를 포함할 수 있다.
도 2는 인스트루먼테이션 비트를 포함하는 명령어 세트 포맷의 일 예를 나타 낸다.
도 2에 도시된 바와 같이, 인스트루먼테이션이 실행되어야 하는 명령어의 명령어 세트 아키텍처(200)는, 명령 코드(operation code), 컨디션 비트(conditional bit) 등을 포함하는 기존의 명령어 구조(220)외에 인스트루먼테이션의 실행 여부를 나타내는 인스트루먼테이션 비트(또는 인스트루먼테이션 플래그)(210)를 추가적으로 포함할 수 있다.
다시 도 1을 참조하면, 코드 변환부(112)는 메모리(120)로부터 프로그램을 페치하여 인스트루먼테이션이 실행되어야 하는 명령어를 발견하면, 명령어에 해당 명령어에 대하여 인스트루먼테이션이 실행되어야 함을 나타내도록 인스트루먼테이션 비트를 설정할 수 있다. ISA 인코딩 맵에 별도의 인스트루먼테이션 비트가 포함되어 있지 않은 경우, 코드 변환부(112)는 기존의 명령어 세트 아키텍처의 유보된(reserved) 비트의 일부에 인스트루먼테이션 비트를 설정할 수 있다. 제어부(114)는 설정된 인스트루먼테이션 비트로 인스트루먼테이션 코드로 분기해야 함을 알 수 있다.
또한, 코드 변환부(112)는 레지스터(116)에 인스트루먼테이션 코드 실행을 위하여 분기할 메모리의 주소를 설정한다. 또한, 코드 변환부(112)는 레지스터(116)에 인스트루먼테이션 코드 실행시 이용할 스택 포인터를 저장할 수 있다.
제어부(114)는 페치된 명령어에 인스트루먼테이션이 실행되어야 함을 나타내는 인스트루먼테이션 비트가 설정되어 있으면, 코드 변환부(112)에 의해 설정되어, 레지스터(116)에 저장된 분기할 메모리의 주소로 분기하여 인스트루먼테이션 코드 를 실행한다. 제어부(114)는 인스트루먼테이션 코드를 실행할 때 인스트루먼테이션 핸들러로서 동작한다.
제어부(114)는 인스트루먼테이션 코드를 실행함으로써, 실행 프로그램에 대한 트레이스 정보를 획득할 수 있다. 트레이스 정보는 특정 이벤트 발생 횟수, 실행 플로우 등을 포함할 수 있으며, 제어부(114)가 획득할 수 있는 트레이스 정보는 인스트루먼테이션 코드의 내용에 따라 다양할 수 있다.
레지스터(116)는 일반으로 이용되는 레지스터 외에, 인스트루먼테이션 동작을 실행하기 위하여, 인스트루먼테이션 핸들러 동작 실행을 위한 인스트루먼테이션 코드의 주소, 인스트루먼테이션이 실행되어야 함을 나타내는 인스트루먼테이션 비트가 추가된 명령어가 저장된 주소, 인스트루먼테이션 코드 실행시 이용할 스택 포인터 및 분기전에 실행되었던 명령어 실행 과정에서 발생된 정보의 저장 주소 중 적어도 하나를 저장하는 추가적인 레지스터를 포함할 수 있다.
도 3은 도 1의 프로세서(110)의 코드 변환부(112)에 의한 프로그램 코드의 변환의 일 예를 나타내는 도면이다.
프로그램 코드(310)에서 명령어(311)는 레지스터 r1에 저장된 값과 레지스터 r2에 저장된 값의 비교를 실행하는 동작을 나타낸다. 명령어(312)는 레지스터 r1에 저장된 값이 레지스터 r2에 저장된 값보다 크면, 레지스터 r1에 저장된 값에서 레지스터 r2에 저장된 값을 차감하고, 차감 결과를 레지스터 r1에 저장하는 동작을 나타낸다. 명령어(313)는 레지스터 r1에 저장된 값이 레지스터 r2에 저장된 값보다 작으며, 레지스터 r2에 저장된 값에서 레지스터 r1에 저장된 값을 차감하고, 차 감 결과를 레지스터 r2에 저장하는 동작을 나타낸다.
따라서, 명령어(311)의 실행 결과에 따라서, 명령어(312) 및 명령어(313)는 선택적으로 실행되어야 하므로, 명령어(312) 및 명령어(313)에 대한 인스트루먼테이션이 실행되어야 하는 경우에도, 명령어(312) 및 명령어(313) 둘 중 하나의 명령어에 대해서만 인스트루먼테이션 코드가 실행되어야 한다. 그러나, 일반적인 바이너리 인스트루먼테이션을 프로그램 코드(310)에 적용하면, 명령어(311) 및 명령어(312) 둘 다에 대하여 인스트루먼테이션 코드가 실행되는 오류가 발생될 수 있다.
일 실시예에 따르면, 코드 변환부(112)는 프로그램 코드(310)를 컴파일하여 프로그램 코드(320)를 생성할 수 있다. 생성된 프로그램 코드(320)에는 조건부 실행임을 나타내는 컨디션 비트(c) 및 인스트루먼테이션 코드가 실행되어야 함을 나타내는 인스트루먼테이션 비트(i)가 설정된다.
여기에서, 컨디션 비트(c)가 0으로 설정되어 있으면, 실행되지 않을 명령어임을 나타내고, 컨디션 비트(c)가 1로 설정되어 있으면, 명령어가 실행되어야 함을 나타내고, 인스트루먼테이션 비트(i)가 0으로 설정되어 있으면, 인스트루먼테이션 코드가 실행되지 않으며, 인스트루먼테이션 비트(i)가 1로 설정되면, 인스트루먼테이션 코드가 실행됨을 나타낸다고 가정한다.
제어부(114)는 명령어(321)를 실행한 후, 명령어(322)의 컨디션 비트(c)를 참조하여 명렁어(322)가 실행되어야 하는 명령어인지 확인한다. 명령어(322)의 컨디션 비트(c)의 값은 0이므로, 제어부(114)는 명령어(322)를 실행하지 않고, 명령 어(323)를 페치한다. 명령어(323)의 컨디션 비트(c)의 값은 1이고, 인스트루먼테이션 비트(i)의 값이 1이므로, 제어부(114)는 명령어(323) 실행전에 인스트루먼테이션 코드를 실행한 다음, 명령어(323)를 실행할 수 있다.
이와 같이, 인스트루먼테이션시 프로세서(110)를 이용함으로써, 인스트루먼테이션 속도를 빠르게 하고, 기존의 바이너리 인스트루먼테이션 소프트웨어를 이용하는 경우에 비하여, 메모리 사용량을 줄이고 정확도를 향상시킬 수 있다. 즉, 바이너리 인스트루먼테이션을 이용하여 성능을 측정하고자 할 때 소요되는 준비 시간과 그 과정에 필요한 메모리의 양을 줄일 수 있다. 또한, 바이너리 인스트루먼테이션에 의한 성능 측정보다 더욱 정교한 결과를 얻을 수 있다.
도 4는 도 1의 프로세서(110)에 포함되는 레지스터(116) 구조의 일 예를 나타내는 도면이다.
레지스터(116)는 일반 레지스터(410), 인스트루먼테이션 핸들러 레지스터(420), 프로그램 카운터(Program Counter; 430), 링크 레지스터(440), 스택 포인터(450), 링크 레지스터_inst(linked register_instrumentation; 460), 스택 포인터_inst(stack pointer register_instrumentation; 470) 및 실행 모드 레지스터(480)를 포함할 수 있다.
일반 레지스터(410)는 프로세서(110)의 상태 및 데이터 처리 명령어의 오퍼랜드나 오퍼레이션 결과를 저장하는 레지스터로 사용될 수 있다. 일반 레지스터(410)는 메모리 접근 명령어의 메모리 접근 주소 계산에 사용될 수도 있다.
인스트루먼테이션 핸들러 레지스터(420)는 인스트루먼테이션 핸들러 동작 실 행을 위한 인스트루먼테이션 코드의 주소를 저장한다.
프로그램 카운터(430)는 순차적인 명령어 실행시에 자동적으로 증가되며, 실행되어야할 명렁어의 주소를 가지고 있다.
링크 레지스터(440)는 함수 호출 또는 예외가 발생했을 때의 복귀 주소를 저장한다. 링크 레지스터(440)는 프로세서(110)의 동작 모드별로 별도로 구성될 수 있다.
스택 포인터(450)는 프로세서(110)의 동작 모드에 따라 할당된 스택의 최상단을 지시하는 레지스터이다. 스택 포인터(450)는 링크 레지스터(440)와 같이 프로세서(110)의 동작 모드별로 별도로 구성될 수 있다.
링크 레지스터_inst(460)는 인스트루먼테이션 코드를 처리하기 위해 분기하기 전에 통상 모드로 복귀하는 경우 복귀 주소를 저장한다. 즉, 링크 레지스터_inst(460)에는 인스트루먼테이션 비트가 설정된 명령어의 주소가 저장된다.
스택 포인터_inst(470)는 인스트루먼테이션 코드 실행시 이용할 스택의 주소를 저장한다.
실행 모드 레지스터(480)는 제어부(114)가 하나 이상의 실행 모드를 가지도록 구성될 때 이용될 수 있다. 이와 같은 레지스터 구조는 구현예에 따라 변경될 수 있으며, 이와 같은 구성에 한정되지 않는다.
도 1 및 도 4를 참조하면, 코드 변환부(112)는 인스트루먼테이션을 위하여, 인스트루먼테이션 코드(또는 인스트루먼테이션 핸들러)의 주소 예를 들어, Oxb7120000를 인스트루먼테이션 핸들러 레지스터(420)에 저장하고, 스택 포인터 _inst(470)에 미리 인스트루먼테이션에 사용될 스택 포인터 값을 넣어둘 수 있다.
제어부(114)는, 명령어를 페치하고, 페치된 명령어에 인스트루먼테이션 비트가 설정되어 있으면, 인스트루먼테이션 핸들러 레지스터(420)에 저장된 분기할 메모리의 주소로 분기하여 인스트루먼테이션 코드를 실행한다. 또한, 제어부(114)는, 스택 포인터가 지시하는 스택의 데이터를 인스트루먼테이션 코드 실행에 이용할 수 있다.
또한, 제어부(114)는 인스트루먼테이션이 실행될 명령어를 발견하면, 해당 명령어의 주소를 링크 레지스터_inst(460)에 저장한다. 제어부(114)는 인스트루먼테이션 코드 실행을 한 다음, 인스트루먼테이션이 종료된 경우, 링크 레지스터_inst(460)에 저장된 주소를 이용하여, 분기전의 주소로 되돌아와서 중단되었던 명령어 실행을 계속할 수 있다.
도 5는 인스트루먼테이션 실행 방법의 일 예를 나타내는 흐름도이다.
이하에서, 도 1, 도 4 및 도 5를 참조하여, 인스트루먼테이션 실행 과정을 일 예를 설명한다. 설명의 편의를 위해서, ISA에 추가적으로 인스트루먼테이션 비트를 추가한 시스템을 가정한다. 또한, 도 4와 같이, 인스트루먼테이션 모드를 추가로 가지며, 프로세서(110)는 인스트루먼테이션 모드를 위한 추가적인 인스트루먼트 핸들러 레지스터(420), 링크 레지스터_inst(460) 및 스택 포인터_inst(470)를 갖는다고 가정한다.
제어부(114)는 명령어를 페치한다(510). 제어부(114)는 컨디션 비트를 확인하여, 페치된 명령어가 실행될 필요가 있는지 확인한다(520). 페치된 명령어가 실 행이 필요없으면, 제어부(114)는 다음 명령어를 페치한다(510).
페치된 명령어가 실행될 필요가 있으면(510), 제어부(114)는 인스트루먼테이션이 실행되어야 함을 나타내는 인스트루먼테이션 비트가 설정되어 있는지 확인하여, 인스트루먼테이션이 필요한 명령어인지 결정한다(530).
인스트루먼테이션이 실행되어야 함을 나타내는 인스트루먼테이션 비트가 설정되어 있는 경우, 제어부(114)는 현재까지의 명령어 실행 과정에서 생성된 정보를 저장한다(540). 현재까지의 명령어 실행 과정에서 발생된 정보를 메모리(120)에 저장하고 명령어 실행 과정에서 생성된 정보의 저장 주소는 프로세서(110)의 특정 레지스터에 저장할 수 있다. 또한, 동작 530 과정에서, 제어부(114)는 프로그램 카운터(513)의 값을 링크 레지스터_inst(460)의 값으로 기입하여 인스트루먼테이션 코드 실행 종료 후 복귀할 명령어가 저장된 메모리의 주소를 저장한다.
제어부(114)는 실행 모드를 인스트루먼테이션으로 변경하고, 인스트루먼테이션 핸들러 레지스터(420)에 저장된 주소로 분기하여(550), 인스트루먼테이션 코드를 실행한다(560). 상세하게는, 인스트루먼테이션 코드를 실행하기 위하여, 제어부(114)는 프로그램 카운터(430)에 인스트루먼테이션 핸들러 레지스터(420)에 저장된 인스투먼테이션 코드의 주소를 기입하고, 인스트루먼트 핸들러의 기능을 실행하기 위한 인스트루먼테이션 코드에 해당하는 명령어를 페치할 수 있다.
제어부(114)는 인스트루먼테이션 코드를 모두 실행하고, 리턴 코드를 만나서 인스트루먼테이션을 종료해야 하는 경우(570), 실행 정보를 복원한다(580). 제어부(114)는 명령어 실행 과정에서 발생된 정보의 주소를 이용하여, 인스트루먼테이 션 코드로 분기하기 전의 명령어 실행 과정에서 발생된 정보를 일반 레지스터(410)로 복원할 수 있다.
그런 다음, 제어부(114)는 원래의 주소로 분기하여 이전에 실행하지 않았던 인스트루먼테이션 비트가 설정된 명령어를 실행하고(590), 계속해서 다음 명령어를 처리한다(510). 이를 위해, 제어부(114)는 링크 레지스터_inst(460)의 값을 프로그램 카운터(430)로 옮겨, 원래의 실행 코드 즉, 인스트루먼테이션 비트가 설정된 명령어로 돌아갈 수 있다.
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
도 1은 인스트루먼테이션 실행 장치의 구성의 일 예를 나타내는 도면이다.
도 2는 인스트루먼테이션 비트를 포함하는 명령어 세트 포맷의 일 예를 나타낸다.
도 3은 도 1의 프로세서(110)의 코드 변환부(112)에 의한 프로그램 코드의 변환의 일 예를 나타내는 도면이다.
도 4는 도 1의 프로세서(110)에 포함되는 레지스터(116) 구조의 일 예를 나타내는 도면이다.
도 5는 인스트루먼테이션 실행 방법의 일 예를 나타내는 흐름도이다.

Claims (11)

  1. 인스트루먼테이션이 실행되어야 하는 명령어에 대하여 인스트루먼테이션이 실행될 명령어임을 나타내도록 인스트루먼테이션 비트를 설정하고, 인스트루먼테이션 코드 실행을 위하여 분기할 메모리의 주소를 설정하는 코드 변환부;
    상기 분기할 메모리의 주소를 저장하는 레지스터; 및
    명령어를 페치하고, 페치된 명령어에 인스트루먼테이션 비트가 설정되어 있으면, 상기 분기할 메모리의 주소로 분기하여 상기 인스트루먼테이션 코드를 실행하는 제어부;를 포함하는 인스트루먼테이션 실행 장치.
  2. 제1항에 있어서,
    상기 레지스터는, 상기 인스트루먼테이션 비트가 설정된 명령어의 주소를 더 저장하는 인스트루먼테이션 실행 장치.
  3. 제2항에 있어서,
    상기 인스트루먼테이션 코드 실행이 종료된 경우, 상기 제어부는 상기 인스트루먼테이션 비트가 설정된 명령어의 주소를 이용하여, 상기 인스트루먼테이션 코드로 분기하기 전의 인스트루먼테이션 비트가 설정된 명령어 실행을 계속하는 인스트루먼테이션 실행 장치.
  4. 제1항에 있어서,
    상기 레지스터는, 상기 인스트루먼테이션 코드 실행시 이용할 스택 포인터를 더 저장하는 인스트루먼테이션 실행 장치.
  5. 제1항에 있어서,
    상기 레지스터는, 상기 분기전에 실행되었던 명령어 실행 과정에서 발생된 정보의 주소를 더 저장하는 인스트루먼테이션 실행 장치.
  6. 제5항에 있어서,
    상기 인스트루먼테이션 코드 실행이 종료된 경우, 상기 제어부는 명령어 실행 과정에서 발생된 정보의 주소를 이용하여, 상기 인스트루먼테이션 코드로 분기하기 전의 상기 명령어 실행 과정에서 발생된 정보를 복원하는 인스트루먼테이션 실행 장치.
  7. 제1항에 있어서,
    상기 제어부는, 상기 페치된 명령어가 컨디션 비트 및 인스트루먼테이션 비트를 포함하는 경우, 상기 컨디션 비트가 상기 명령어를 실행할 것을 나타내고, 상기 인스트루먼테이션 비트가 인스트루먼테이션을 실행할 것을 나타내는 경우에, 상기 인스트루먼테이션 코드를 실행하는 인스트루먼테이션 실행 장치.
  8. 인스트루먼테이션이 실행되어야 하는 명령어에 인스트루먼테이션이 실행될 명령어임을 나타내도록 인스투먼테이션 비트를 설정하는 단계;
    인스트루먼테이션 코드 실행을 위하여 분기할 메모리의 주소를 설정하는 단계; 및
    페치된 명령어에 인스트루먼테이션 비트가 설정되어 있으면, 상기 분기할 메모리 주소로 분기하여 상기 인스트루먼테이션 코드를 실행하는 단계;를 포함하는 인스트루먼테이션 실행 방법.
  9. 제8항에 있어서,
    상기 인스트루먼테이션 코드를 실행하는 단계 이전에,
    상기 인스트루먼테이션 비트가 설정된 명령어의 주소를 저장하는 단계를 더 포함하고,
    상기 인스트루먼테이션 코드 실행하는 단계 이후에,
    상기 인스트루먼테이션 비트가 설정된 명령어의 주소를 이용하여, 상기 인스트루먼테이션 코드로 분기하기 전의 상기 인스트루먼테이션 비트가 설정된 명령어 실행을 계속하는 단계를 더 포함하는 인스트루먼테이션 실행 방법.
  10. 제8항에 있어서,
    상기 인스트루먼테이션 코드를 실행하는 단계 이전에,
    상기 인스트루먼테이션 코드 실행시 이용할 스택 포인터를 저장하는 단계를 더 포함하는 인스트루먼테이션 실행 방법.
  11. 제8항에 있어서,
    상기 인스트루먼테이션 코드를 실행하는 단계 이전에,
    상기 분기전에 실행되었던 명령어 실행 과정에서 발생된 정보를 저장하고, 상기 정보의 주소를 저장하는 단계를 더 포함하고,
    상기 인스트루먼테이션 코드 실행하는 단계 이후에,
    상기 명령어 실행 과정에서 발생된 정보의 주소를 이용하여, 상기 인스트루먼테이션 코드로 분기하기 전의 상기 명령어 실행 과정에서 발생된 정보를 복원하는 단계를 더 포함하는 인스트루먼테이션 실행 방법.
KR1020090127298A 2009-12-18 2009-12-18 인스트루먼테이션 실행 장치 및 방법 KR20110070468A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090127298A KR20110070468A (ko) 2009-12-18 2009-12-18 인스트루먼테이션 실행 장치 및 방법
US12/856,896 US20110154299A1 (en) 2009-12-18 2010-08-16 Apparatus and method for executing instrumentation code

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090127298A KR20110070468A (ko) 2009-12-18 2009-12-18 인스트루먼테이션 실행 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20110070468A true KR20110070468A (ko) 2011-06-24

Family

ID=44152984

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090127298A KR20110070468A (ko) 2009-12-18 2009-12-18 인스트루먼테이션 실행 장치 및 방법

Country Status (2)

Country Link
US (1) US20110154299A1 (ko)
KR (1) KR20110070468A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190076217A (ko) * 2017-12-22 2019-07-02 한국전자통신연구원 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280447B2 (en) 2012-03-16 2016-03-08 International Business Machines Corporation Modifying run-time-instrumentation controls from a lesser-privileged state
US9158660B2 (en) 2012-03-16 2015-10-13 International Business Machines Corporation Controlling operation of a run-time instrumentation facility
US9430238B2 (en) * 2012-03-16 2016-08-30 International Business Machines Corporation Run-time-instrumentation controls emit instruction
US9442824B2 (en) 2012-03-16 2016-09-13 International Business Machines Corporation Transformation of a program-event-recording event into a run-time instrumentation event
US9411591B2 (en) 2012-03-16 2016-08-09 International Business Machines Corporation Run-time instrumentation sampling in transactional-execution mode
US9250902B2 (en) 2012-03-16 2016-02-02 International Business Machines Corporation Determining the status of run-time-instrumentation controls
US9367316B2 (en) 2012-03-16 2016-06-14 International Business Machines Corporation Run-time instrumentation indirect sampling by instruction operation code
US9465716B2 (en) 2012-03-16 2016-10-11 International Business Machines Corporation Run-time instrumentation directed sampling
US9471315B2 (en) 2012-03-16 2016-10-18 International Business Machines Corporation Run-time instrumentation reporting
US9483268B2 (en) 2012-03-16 2016-11-01 International Business Machines Corporation Hardware based run-time instrumentation facility for managed run-times
US9405541B2 (en) 2012-03-16 2016-08-02 International Business Machines Corporation Run-time instrumentation indirect sampling by address
US9454462B2 (en) 2012-03-16 2016-09-27 International Business Machines Corporation Run-time instrumentation monitoring for processor characteristic changes
US9588756B2 (en) * 2012-03-22 2017-03-07 Irdeto B.V. Updating software components in a program
US10318271B2 (en) 2015-01-05 2019-06-11 Irdeto Canada Corporation Updating software components in a program
US10558553B2 (en) * 2016-11-30 2020-02-11 International Business Machines Corporation Enabling non-blocking runtime application debugging for a single threaded server environment

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
HU172445B (hu) * 1976-10-13 1978-09-28 Bhg Hiradastech Vallalat Programmiruemoe ustrojstvo dlja upravlenija sredne- i malojomkostnymi perekljuchateljami telefonnykh centrov
US4724521A (en) * 1986-01-14 1988-02-09 Veri-Fone, Inc. Method for operating a local terminal to execute a downloaded application program
US6272257B1 (en) * 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
US6505296B2 (en) * 1997-10-13 2003-01-07 Hewlett-Packard Company Emulated branch effected by trampoline mechanism
US6988271B2 (en) * 1998-10-02 2006-01-17 Microsoft Corporation Heavyweight and lightweight instrumentation
US6230312B1 (en) * 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
US6918110B2 (en) * 2001-04-11 2005-07-12 Hewlett-Packard Development Company, L.P. Dynamic instrumentation of an executable program by means of causing a breakpoint at the entry point of a function and providing instrumentation code
US7281242B2 (en) * 2002-01-18 2007-10-09 Bea Systems, Inc. Flexible and extensible Java bytecode instrumentation system
US7783866B2 (en) * 2006-05-05 2010-08-24 International Business Machines Corporation Method and apparatus for executing instrumentation code using processor instructions
US8245199B2 (en) * 2006-05-05 2012-08-14 International Business Machines Corporation Selectively marking and executing instrumentation code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190076217A (ko) * 2017-12-22 2019-07-02 한국전자통신연구원 멀티 코어를 이용한 동적 바이너리 인스트루멘테이션 장치 및 방법

Also Published As

Publication number Publication date
US20110154299A1 (en) 2011-06-23

Similar Documents

Publication Publication Date Title
KR20110070468A (ko) 인스트루먼테이션 실행 장치 및 방법
US20230325302A1 (en) Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction
US7107585B2 (en) Compilation of application code in a data processing apparatus
JP5129929B2 (ja) 制限的な呼び出し規約を有するコードをインストルメントする方法
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US10860300B2 (en) Direct function call substitution using preprocessor
US8745596B2 (en) Program debugging with dynamically inserted instrumentation
US9626170B2 (en) Method and computer program product for disassembling a mixed machine code
US7620802B2 (en) Instruction execution device, debugging method, debugging device, and debugging program
US8875111B2 (en) Intermediate language representation and modification
US20070234307A1 (en) Methods and apparatus to inline conditional software instrumentation
JP2015516601A (ja) 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構
KR20100106409A (ko) 다중 언어 소프트웨어 코드 분석
US9129062B1 (en) Intercepting subroutine return in unmodified binaries
US7110934B2 (en) Analysis of the performance of a portion of a data processing system
CN113778838A (zh) 二进制程序动态污点分析方法及装置
Iskhodzhanov et al. Combining compile-time and run-time instrumentation for testing tools
Baumann et al. Cudagrind: Memory-usage checking for cuda
US20230315453A1 (en) Forward conditional branch event for profile-guided-optimization (pgo)
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
Spink et al. Efficient dual-ISA support in a retargetable, asynchronous dynamic binary translator
US9830174B2 (en) Dynamic host code generation from architecture description for fast simulation
Omar et al. Binary-level data dependence analysis of hot execution regions using abstract interpretation at runtime
SU849218A1 (ru) Устройство дл отладки программ
Zeng et al. SC-xScript: An Embedded Script Language for Scientific Computation in Embedded Systems.

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid