KR102025556B1 - 처리 장치, 추적 유닛 및 진단 장치 - Google Patents

처리 장치, 추적 유닛 및 진단 장치 Download PDF

Info

Publication number
KR102025556B1
KR102025556B1 KR1020137020340A KR20137020340A KR102025556B1 KR 102025556 B1 KR102025556 B1 KR 102025556B1 KR 1020137020340 A KR1020137020340 A KR 1020137020340A KR 20137020340 A KR20137020340 A KR 20137020340A KR 102025556 B1 KR102025556 B1 KR 102025556B1
Authority
KR
South Korea
Prior art keywords
condition
processing
flag
state
command
Prior art date
Application number
KR1020137020340A
Other languages
English (en)
Other versions
KR20140006861A (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 KR20140006861A publication Critical patent/KR20140006861A/ko
Application granted granted Critical
Publication of KR102025556B1 publication Critical patent/KR102025556B1/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
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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
    • 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/3457Performance evaluation by simulation
    • G06F11/3461Trace driven simulation
    • 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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

처리 회로(4)는 적어도 하나의 조건 명령에 응답하여 적어도 하나의 조건 플래그(22)의 서브세트의 현재 값에 의존하여 조건 동작을 수행한다. 추적 회로(6)는 처리 회로(4)에 의해 수행된 동작을 나타내는 추적 데이터 요소를 생성하도록 제공된다. 처리 회로(4)가 적어도 하나의 선택된 명령을 처리하면, 추적 회로(6)는 적어도 조건 명령의 결과를 판정하기 위해 필요한 조건 플래그(22)의 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한다. 대응하는 진단 장치(12)는 추적된 조건 값을 사용하여 적어도 하나의 조건 명령의 처리 결과를 판정한다.

Description

처리 장치, 추적 유닛 및 진단 장치{PROCESSING APPARATUS, TRACE UNIT AND DIAGNOSTIC APPARATUS}
본 발명은 데이터 처리 분야에 관한 것이다. 보다 구체적으로, 본 발명은 처리 장치에 의해 수행되는 추적 처리 동작과 추적 중 생성되는 추적 데이터의 분석에 관한 것이다.
처리 장치에서, 처리 회로에 의해 수행되는 처리 동작을 모니터링하고 수행된 처리 동작을 나타내는 추적 데이터를 생성하기 위해 추적 회로가 제공될 수 있다. 처리 동작의 처리 결과의 유도를 위해 추적 데이터는 진단 장치에 의해 분석될 수 있다. 처리 결과는 처리 장치가 정확하게 동작하고 있는지 여부를 입증하기 위해 예상된 결과에 대해 확인된다.
처리 장치는 관련 조건을 특정하는 조건 명령을 실행할 수 있다. 조건 명령의 처리 결과는 관련 조건이 조건 명령의 실행시 만족되는지 여부에 의존한다. 조건 명령의 실행이 추적 회로에 의해 추적되면, 추적 회로는 조건의 통과 또는 실패의 여부의 표시를 포함하는 추적 데이터를 생성할 수 있다. 추적 데이터의 분석시, 통과/실패 표시는 조건 명령의 결과의 판정에 사용될 수 있다.
그러나, 소정의 발전된 프로세서의 추적시, 조건 결과의 통과/실패 결과는 획득하기 어렵다. 일부 프로세서는 서로 평행한 다중 실행 스테이지를 갖는 처리 파이프라인을 포함할 수 있다. 소정의 프로세서는 성능을 개선하기 위해 명령의 비순차적 실행을 수행한다. 따라서, 통과/실패 결과가 유효하게 될 시점 및 파이프라인에서의 해당 포인트를 미리 예측하는 것은 어려울 수 있다.
본 기술은 조건 명령의 추적을 단순화하는 것을 추구한다.
일 측면에 따르면, 본 발명은 처리 장치를 제공하며, 해당 장치는:
프로그램 명령에 응답하여 처리 동작을 수행하도록 된 처리 회로와;
상기 처리 회로의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치와;
상기 프로그램 명령에 응답하여 상기 처리 회로에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하도록 된 추적 회로를 포함하고;
상기 처리 회로는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며;
상기 추적 회로는, 적어도 하나의 선택된 명령을 처리하는 상기 처리 회로에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하는 것을 특징으로 한다.
처리 장치는 처리 회로의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하는 조건 상태 저장 위치(예, 레지스터)를 가질 수 있다. 처리 회로는 최소한 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 명령을 실행할 수 있다. 예를 들면, 조건 명령이 실행시, 그 관련 조건 동작은 조건 플래그의 서브세트의 현재 값이 주어진 조건을 만족하면 수행될 수 있는 반면, 조건이 만족되지 않으면, 어떤 동작도 수행될 수 없다. 추적 회로는, 적어도 하나의 선택된 명령을 처리하는 처리 회로에 응답하여, 조건 명령이 의존하는 최소한 적어도 하나의 조건 플래그의 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 구성될 수 있다. 추적된 조건 값은 적어도 하나의 조건 명령의 처리 결과를 판정하기 위해 정보를 제공한다.
본 기술은 조건 플래그의 값이 통상적으로 조건 명령의 통과/실패 결과보다 더 쉽게 사용될 수 있음을 인식하고 있다. 예를 들면, 조건 플래그는 처리 장치의 구조적 상태의 일부라서. 조건 플래그는 명령의 실행 결과가 유용하게 되는 시점과 파이프라인의 스테이지를 모니터링할 필요없이 처리 파이프라인의 초기 스테이지에서 판독될 수 있다. 그러므로, 통과/실패 결과보단 조건 플래그 값을 추적하는 것에 의해 추적 회로의 구성은 단순화된다.
추적된 조건 값은 다른 형태를 가질 수 있다. 일례에서, 추적된 조건 값은 최소한 적어도 하나의 조건 플래그의 서브세트의 현재 값을 포함할 수 있다. 따라서, 추적 데이터 요소는 조건 플래그값을 직접적으로 식별한다.
대안적으로, 추적된 조건 값은 최소한 적어도 하나의 조건 플래그의 서브세트의 값을 식별하는 식별자를 포함할 수 있다. 이것은 소정의 경우에는 조건 플래그의 실제 값을 추적하는 것보다 더 효율적일 수 있다. 예를 들면, 조건 플래그의 값에서 소정의 패턴이 다른 패턴에 비해 더 흔하면, 가장 흔한 패턴에는 조건 플래그의 실제 값보다 적은 비트를 갖는 특정 식별자가 할당될 수 있다. 이것은 추적 회로에 의해 생성되는 추적 데이터의 양을 감소시켜 추적 대역폭에 대한 제약을 낮추는 경향이 있다.
조건 플래그가 추적되는 명령 스트림의 포인트는 변할 수 있고, 해당 결과가 추적된 조건 값을 사용하여 판정되는 조건 명령이 되는 것을 반드시 필요로 하는 것은 아니다. 추적된 조건 값은 임의의 선택된 명령에서 출력될 수 있다.
일례에서, 처리 회로는 관련 처리 동작을 수행하고 관련 처리 동작의 처리 결과에 의존하여 적어도 하나의 조건 플래그를 갱신하기 위해 적어도 하나의 조건 갱신 명령에 응답한다. 이 경우, 조건 플래그의 추적을 시발시키는 적어도 하나의 선택된 명령은 적어도 하나의 조건 갱신 명령을 포함할 수 있다. 예를 들면, 조건 갱신 명령은 2개의 데이터 값을 비교하고 비교 결과를 기초로 적어도 하나의 조건 플래그를 갱신하는 비교 명령을 포함할 수 있으며, 적어도 하나의 조건 플래그는 비교 명령의 실행시 추적될 수 있다. 적어도 하나의 조건 플래그가 갱신될 때 추적 스트림에 포함된 추적된 조건 값은 임의의 후속하는 조건 명령이 그것들의 관련 조건을 통과 또는 실패하였는지 여부를 판정하기 위한 정보를 제공한다.
추적된 조건 값이 적어도 하나의 조건 갱신 명령의 실행시 출력되는 경우, 추적된 조건 값은 적어도 하나의 조건 갱신 명령을 처리하는 것으로부터 얻어지는 조건 플래그의 갱신된 값을 나타낼 수 있다. 따라서, 이러한 갱신된 값은 조건 플래그의 다음 갱신 이전에 일어나는 임의의 후속하는 조건 명령의 결과를 판정하는데 사용될 수 있다.
상기 적어도 하나의 조건 갱신 명령은 처리 회로에 의해 실행되는 모든 조건 갱신 명령을 포함할 필요는 없다. 소정의 경우, 임의의 중간 조건 명령이 없이 잇달아 생기는 여러 개의 조건 갱신 명령이 존재할 수 있는데, 해당 경우 최종 조건 갱신 명령으로부터 얻어지는 조건 플래그 값만이 조건 명령에 의해 사용될 수 있다. 따라서, 조건 갱신 명령 모두에 대해 추적된 조건 값을 생성할 필요가 없게 된다.
적어도 하나의 조건 갱신 명령 대신에 또는 이외에, 적어도 하나의 선택된 명령은 적어도 하나의 조건 명령 중 적어도 하나를 포함할 수 있다. 소정의 경우, 조건 갱신 명령의 실행시, 임의의 후속 조건 명령이 해당 조건 갱신 명령에 의해 생성된 갱신된 조건 플래그 값을 실제로 사용할지 여부를 판정하기가 어려울 수 있다. 따라서, 조건 명령이 적어도 하나의 조건 플래그를 사용할 때까지 기다린 후 해당 조건 명령에 의해 사용되는 최소한 적어도 하나의 조건 플래그의 서브세트를 추적하는 것이 더 효율적일 수 있다.
추적된 조건 값이 조건 명령의 실행시 출력되는 경우, 추적된 조건 값은 조건 명령의 처리시 적어도 하나의 조건 플래그에 있어서 적어도 관련 서브세트의 현재 값을 나타낼 수 있다.
다시 말해, 모든 조건 명령의 실행시 추적된 조건 값을 항상 출력할 필요는 없다. 프로그램은 상호 배타적인 조건과 관련된 상보적 쌍의 조건 명령을 포함할 수 있다. 예를 들면, "동일한" 결과를 발생시키는 이전의 처리 동작에 의존하는 제1 조건 명령은 "동일하지 않음" 결과를 내는 이전의 처리 동작에 의존하는 제2 조건 명령이 뒤따를 수 있다. 이 경우, 제2 조건 명령에 대한 조건 플래그 값을 추적할 필요가 없게 되는데, 이는 그 처리 결과가 제1 조건 명령에 대해 생성된 추적된 조건 값으로부터 판정될 수 있기 때문이다. 따라서, 소정의 경우, 선택된 명령은 적어도 하나의 조건 플래그의 갱신 후 처리되는 제1 조건 명령을 포함하는 것이 바람직할 수 있다.
조건 명령 또는 조건 갱신 명령은 모든 종류가 추적 유닛에 의해 추적될 필요는 없다. 소정의 예에서, 명령의 종류의 서브세트만이 관심 대상일 수 있다. 이 경우, 조건 명령 또는 조건 갱신 명령의 관련 서브세트만이 추적된 조건 값을 포함하는 추적 데이터 요소의 출력을 시발시키게 된다. 추적 회로는 추적된 조건 값을 포함하는 추적 데이터 요소의 생성을 시발시키기 위해 적어도 하나의 선택된 명령에 어떤 프로그램 명령이 포함되는지를 선택하도록 구성될 수 있다. 예를 들면, 추적 회로는 조건 플래그가 추적되어야 하는 명령, 예를 들면, 조건 저장 명령과 같이 오직 특정의 조건 명령만을 나타내는 제어 신호에 응답할 수 있다.
일부 종류의 명령은 조건 명령 및 조건 갱신 명령일 수 있음에 유의하라. 예를 들면, 조건 비교 명령은 관련 조건을 가질 수 있으며, 관련 조건이 만족되면 수행될 비교를 특정할 수 있다. 조건 비교 명령의 실행과 관련하여, 관련 조건이 적어도 하나의 조건 플래그의 현재 값에 의해 만족되면, 비교가 수행되고 비교 결과를 기초로 적어도 하나의 조건 플래그가 갱신된다. 그러므로, 조건 비교 명령은 추적 회로의 구성에 의존하여 조건 명령 또는 조건 갱신 명령 또는 양자의 명령으로서 추적될 수 있다.
추적 회로는 제어 플래그를 저장하도록 구성될 수 있어서, 추적 회로는 특정 프로그램 명령이 추적된 조건 값을 포함하는 추적 데이터 요소의 생성을 시발시키는지 여부를 선택하도록 제어 플래그에 응답할 수 있다. 예를 들면, 추적 회로는제어 플래그를 사용하여 적어도 하나의 조건 플래그의 현재 상태가 이미 추적되었는지 여부를 계속 추적할 수 있고, 제어 플래그를 사용하여 적어도 하나의 조건 플래그가 후속하는 명령으로 추적되어야 하는지 여부를 판정할 수 있다.
일례에서, 제어 플래그는 제1 상태와 제2 상태를 가진다. 예를 들면, 제어 플래그는 제1 및 제2 상태 중 하나를 나타내는 "0"의 값과 제1 및 제2 상태 중 다른 하나를 나타내는 "1"의 값을 가지는 비트를 포함할 수 있다. 추적 회로는 적어도 하나의 조건 플래그의 갱신에 응답하여 제어 플래그를 제1 상태에 배치하도록 할 수 있고, 조건 명령을 처리하는 처리 회로에 응답하여, (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치할 수 있다.
따라서, 제어 플래그의 제1 상태는 적어도 하나의 조건 플래그가 갱신되었으나 적어도 하나의 조건 플래그의 갱신된 값은 아직 추적되지 않았음을 나타낸다. 추적될 조건 명령이 실행시 제어 플래그가 제1 상태에 있으면, 추적 데이터 요소는 추적된 조건 값을 포함하여 생성되므로 조건 명령의 처리 결과는 추적 데이터로부터 판정될 수 있다. 추적된 조건 값을 포함하는 추적 데이터 요소의 생성 후, 제어 플래그는 제2 상태에 배치되어 적어도 하나의 조건 플래그의 현재 상태가 이미 추적되어서 후속의 조건 명령의 실행시 적어도 하나의 조건 플래그를 다시 추적할 필요가 없음을 나타낸다. 제어 플래그는 적어도 하나의 조건 플래그가 한 번 더 갱신되었을 때 제1 상태로 복귀된다. 이 기술은 추적 데이터의 양을 감소시키는 것을 돕는데, 이는 대응하는 명령의 처리 결과가 이전에 생성된 추적 데이터 요소에 포함된 추적된 조건 값으로부터 이미 판정될 수 있으면 추적된 조건 값을 포함하는 추적 데이터 요소가 생성되지 않기 때문이다.
소정의 실시예에서, 조건 상태 저장 위치는 처리 회로의 각각의 조건에 대응하는 복수의 조건 플래그를 저장하도록 구성될 수 있다. 예를 들면, 영국, 캠브릿지에 소재한 ARM Limited사에 의해 설계된 프로세서의 경우, 조건 플래그는 통상적으로 이전 처리 결과가 음의 값인지 여부를 나타내는 N 플래그, 이전 처리 결과가 제로인지 여부를 나타내는 Z 플래그, 이전 처리 동작이 자리올림(carry) 동작을 야기하였는지 여부를 나타내는 C 플래그, 이전 처리 동작이 오버플로를 야기하였는지 여부를 나타내는 V 플래그를 포함한다. 다른 종류의 조건 플래그도 가능하다.
복수의 조건 플래그가 존재하는 경우, 특정 조건 명령은 모든 조건 플래그에 의존할 필요는 없지만, 해당 조건 플래그의 임의의 서브세트에 의존할 수 있다. 조건 플래그의 현재 값을 추적시, 추적 데이터의 양은 복수의 조건 플래그의 관련 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소의 생성에 의해 감소될 수 있다. 서브세트의 일부가 아닌 조건 플래그는 추적 데이터 요소에 포함되는 것으로부터 생략될 수 있다.
다른 한편, 추적 회로는 조건 플래그 중 어떤 서브세트가 실제 조건 명령에 의해 사용되는지 여부에 무관하게 복수의 조건 플래그 모두를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 구성될 수 있다. 이것은 소정의 경우 조건 플래그의 값에 접근하도록 제공된 하드웨어의 복잡성을 감소시킬 수 있는데, 이는 조건 상태 저장 위치의 개별 플래그로의 접근을 위해 회로를 제공할 필요가 없을 것이기 때문이다.
일 실시예에서, 상기 추적 회로는 복수의 조건 플래그에 대응하는 복수의 제어 플래그를 저장하도록 구성될 수 있다. 추적 회로는 각각의 제어 플래그에 응답하여 주어진 프로그램 명령이 상기 대응하는 조건 플래그를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하는지 여부를 선택할 수 있다. 각각의 제어 플래그는, 예컨대, 대응하는 조건 플래그가 해당 플래그의 최근의 갱신 이후에 이미 추적되었는지 여부를 추적하고, 따라서 해당 조건 플래그가 추후의 프로그램 명령의 실행시 추적될 필요가 있는지 여부를 판정하는데 사용될 수 있다.
일례에서, 복수의 제어 플래그 각각은 제1 상태와 제2 상태를 가지며, 상기 추적 회로는 상기 복수의 조건 플래그 중 임의의 플래그의 갱신에 응답하여, 갱신된 조건 플래그에 대응하는 제어 플래그를 최소한 상기 제1 상태에 배치하며; 상기 추적 회로는 조건 플래그의 필요한 서브세트에 의존하는 상기 적어도 하나의 조건 명령 중 하나를 처리하는 상기 처리 회로에 응답하여: (a) 상기 필요한 조건 플래그의 서브세트에 대응하는 상기 대응하는 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 대응하는 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있으면, 해당 제어 플래그가 상기 제1 상태에 있는 상기 필요한 서브세트의 조건 플래그를 최소한 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하고 상기 대응하는 제어 플래그를 상기 제2 상태에 배치한다.
따라서, 임의의 조건 플래그가 갱신되면, 최소한 갱신된 조건 플래그에 대응하는 제어 플래그는 제1 상태에 배치되어 대응하는 조건 플래그가 갱신된 형태로 아직 추적되지 않았음을 나타낸다. 조건 플래그의 필요한 서브세트에 의존하는 조건 명령과 접하는 경우, 해당 서브세트에 대응하는 대응 제어 플래그 중 임의의 플래그가 제1 상태에 있는지 여부가 판정된다. 이들 대응 제어 플래그 중 임의의 플래그가 제1 상태에 있으면, 이것은 대응하는 제어 플래그가 아직 추적되지 않아서, 해당 제어 플래그가 제1 상태에 있는 필요한 서브세트의 조건 플래그를 최소한 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소가 생성된다. 특정 조건 플래그가 추적되면, 그 대응하는 제어 플래그는 제2 상태로 배치된다. 조건 명령과 만나고 필요한 서브세트의 조건 플래그 중 하나가 제2 상태에 있는 대응하는 제어 플래그를 가지는 경우, 이것은 조건 플래그가 이미 추적되어서 다시 추적될 필요가 없음을 나타낸다. 이 기술은 현재 형태로 아직 추적되지 않아서 특정 조건 명령의 처리 결과의 판정을 위해 필요한 조건 플래그를 추적하는 것에 의해 추적 데이터의 양을 감소시키는 것을 돕는다.
일 실시예에서, 상기 복수의 제어 플래그 모두는, 조건 갱신시, 심지어 조건 플래그의 서브세트만 갱신될 때에도, 상기 제1 상태에 배치될 수 있다. 이것은 본 기술의 구현을 위한 하드웨어를 단순화할 수 있는데, 이는 조건 갱신 명령의 결과로서 어떤 플래그가 실제 갱신되었는지를 확인할 필요가 없어지기 때문이다.
복수의 제어 플래그가 제공되는 실시예에서, 해당 제어 플래그가 제1 상태에 있는 필요한 서브세트의 조건 플래그만을 추적하는 것에 의해 추적 데이터의 양을 최대로 감소시킬 수 있다. 그럼에도, 필요한 서브세트의 조건 플래그에 대응하는 대응 제어 플래그 중 임의의 플래그가 조건 명령의 실행시 제1 상태에 있으면, 모든 조건 플래그의 값을 추적하는 것도 가능하다. 이것은 조건 플래그의 상태 판독을 위한 하드웨어를 단순화할 수 있다.
하나 이상의 제어 플래그는 조건 플래그의 갱신 발생시 제1 상태로 배치되는 것을 전술되었다. 그러나, 이것은 제어 플래그가 제1 상태로 재설정되는 경우만일 필요가 없다. 다양한 다른 이벤트도 역시 제어 플래그가 제1 상태에 배치되도록 할 수 있다.
전술한 바와 같이, 본 기술은 모든 종류의 조건 명령에 적용될 필요가 없다. 본 기술은 예컨대 조건 명령의 서브세트에 대해서만 사용될 수 있다. 일례에서, 적어도 하나의 조건 명령의 조건 동작은 무분기(non-branch) 동작일 수 있다. 소정의 추적 회로는 예컨대, 분기 예측 운영을 사용하여 조건 분기 명령의 결과를 판정하기 위한 개별 메커니즘을 가질 수 있다. 그러므로, 본 기술은 소정의 실시예에서 추적 회로에 의해 따로 취급되는 조건 분기 명령의 추적을 통해 조건 비분기 명령에만 적용될 수 있다.
다른 측면에 따르면, 본 발명은 처리 장치를 제공하며, 해당 장치는:
프로그램 명령에 응답하여 처리 동작을 수행하기 위한 처리 수단과;
상기 처리 수단의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하기 위한 조건 상태 저장 수단과;
상기 프로그램 명령에 응답하여 상기 처리 수단에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하기 위한 추적 수단을 포함하고;
상기 처리 수단은 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며;
상기 추적 수단은, 적어도 하나의 선택된 명령을 처리하는 상기 처리 수단에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하는 것을 특징으로 한다.
추가의 측면에 따르면, 본 발명은 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 모니터링하는 추적 유닛을 제공하며, 상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치를 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 추적 유닛은:
상기 프로그램 명령에 응답하여 상기 처리 장치에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하도록 된 추적 회로를 포함하고;
상기 추적 회로는, 적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하는 것을 특징으로 한다.
추가의 측면에 따르면, 본 발명은 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 모니터링하는 추적 유닛을 제공하며, 상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하기 위한 조건 상태 저장 수단을 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 추적 유닛은:
상기 프로그램 명령에 응답하여 상기 처리 장치에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하기 위한 추적 수단을 포함하고;
상기 추적 수단은, 적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하는 것을 특징으로 한다.
또 다른 측면에 따르면, 본 발명은 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 나타내는 추적 데이터를 분석하는 진단 장치를 제공하며, 상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치를 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 진단 장치는:
적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여 생성되고 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 적어도 하나의 추적 데이터 요소를 포함하는 추적 데이터를 수신하도록 된 추적 입력과;
상기 적어도 하나의 추적 데이터 요소에 포함된 상기 추적된 조건 값에 의존하여 상기 적어도 하나의 조건 명령의 처리 결과를 판정하도록 된 진단 회로를 포함하는 것을 특징으로 한다.
진단 장치는 대응하는 추적 유닛에 의해 생성된 추적 데이터를 수신한다. 진단 장치는 추적 데이터를 분석하기 위한 진단 회로를 포함한다. 추적 데이터 요소에 나타낸 추적된 조건 값을 사용하여, 진단 회로는 적어도 하나의 조건 명령의 처리 결과를 판정할 수 있다.
진단 장치는 추적되는 동안 처리 장치에 의해 어떤 명령이 실행되었는지의 지시를 수신할 수 있다. 이러한 지시는 여러 가지 형태를 가질 수 있다. 어떤 명령이 처리 장치에 의해 실행되었는지를 지시하기 위해 추적 스트림 내에 정보를 제공하는 것이 가능하다. 그러나, 진단 장치를 실행된 프로그램 명령을 저장하는 메모리에 액세스되게 하거나(예를 들면, 진단 장치에 프로그램 실행이 시작되는 명령 어드레스를 제공하는 것에 의해), 또는 진단 장치에 처리 장치에 의해 실행된 프로그램의 대응하는 복사본을 저장하기 위한 대응하는 메모리를 제공하는 것에 의해 보다 효율적으로 구현될 수 있다. 진단 장치는 어떤 명령이 처리 장치에 의해 실행되었는지를 나타내는 지시를 사용하여 추적된 조건 값을 포함하는 추적 데이터 요소를 예측하는 시기를 판정할 수 있다. 일례에서, 적어도 하나의 선택된 명령의 지시에 응답하여, 진단 장치는 대응하는 데이터 요소가 추적 스트림 내에 포함되는 것을 유도할 수 있고 해당 데이터 요소의 위치를 확인하는 것에 의해 진단 회로는 적어도 하나의 조건 명령의 처리 결과를 판정할 수 있다. 선택된 명령은 적어도 하나의 조건 갱신 명령이거나 적어도 하나의 조건 명령 중 적어도 하나의 명령일 수 있다.
진단 회로는 제1 상태와 제2 상태를 갖는 진단 제어 플래그를 저장하도록 구성될 수 있으며; 상기 추적 입력은 상기 처리 장치에 의해 처리된 상기 프로그램 명령의 지시를 수신할 수 있으며; 상기 진단 회로는 상기 적어도 하나의 조건 플래그를 갱신하는 상기 처리 장치의 지시에 응답하여 상기 진단 제어 플래그를 상기 제1 상태에 배치할 수 있으며; 상기 진단 회로는 조건 명령을 처리하는 상기 처리 장치의 지시에 응답하여; (a) 상기 진단 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 진단 제어 플래그가 상기 제1 상태에 있으면, 상기 추적 데이터 내에서 상기 조건 명령에 대한 관련 추적 데이터 요소의 위치를 확인하여 상기 관련 추적 데이터 요소 내에 포함된 상기 추적된 상태 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하며; (c) 상기 진단 제어 플래그가 상기 제2 상태에 있으면, 상기 추적 데이터 내에서 이전의 조건 명령에 관련된 추가의 추적 데이터 요소의 위치를 확인하여 상기 추가의 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정한다.
따라서, 진단 회로는 추적 스트림의 생성시 추적 유닛에 의해 사용된 제어 플래그에 대응하는 진단 제어 플래그를 유지할 수 있다. 진단 회로가 적어도 하나의 조건 플래그의 갱신의 결과를 가져오는 처리 회로에 의해 수행된 프로그램 명령의 지시를 수신하면(지시는 추적 스트림 내의 조건 갱신에 대한 분명한 지시이거나, 진단 회로가 예컨대 추적 스트림을 처리하면서 조건 갱신 명령을 접할 때 생기는 내재적인 지시일 수 있음), 진단 장치는 해당 진단 제어 플래그를 해당 상태에 배치하여, 조건 명령이 발견되는 다음 번에 진단 회로가 추적 스트림 내에 추적된 조건 값을 포함하는 관련 추적 데이터 요소가 포함됨을 예측하여야 하는 것을 나타낸다.
진단 회로가 조건 명령을 처리하는 처리 장치의 지시를 수신하면, 진단 장치는 진단 제어 플래그가 제1 상태에 있는지 여부를 판정하고, 진단 제어 플래그가 제1 상태에 있으면, 진단 장치는 해당 조건 명령에 대한 관련 추적 데이터 요소의 위치를 확인하고 관련 추적 데이터 요소에 포함된 추적된 조건 값에 의존하여 조건 명령의 처리 결과를 판정한다. 그런 다음 진단 장치는 진단 제어 플래그를 제2 상태에 배치하여, 임의의 후속하는 조건 명령의 결과가 관련 추적 데이터 요소에 포함된 추적된 조건 값으로부터 유도될 수 있음을 나타낸다. 이후, 진단 제어 플래그가 제2 상태에 있을 때 조건 명령의 지시가 감지되면, 진단 장치는 이전의 조건 명령에 관련된 추적 데이터 요소로 돌아가서, 초기 추적 데이터 요소 내에 포함된 추적된 조건 값에 의존하여 최근의 조건 명령의 처리 결과를 판정할 수 있다. 이 기술은 진단 장치가 추적 회로에 의해 수행된 기술에 대응하는 방식으로 처리 동작의 결과를 판정하도록 할 수 있다.
처리 장치의 조건 상태 저장 위치가 상기 처리 장치의 각각의 조건에 대응하는 복수의 조건 플래그를 저장하면, 진단 회로는 상기 복수의 조건 플래그에 대응하는 복수의 진단 제어 플래그를 저장하도록 구성될 수 있으며, 상기 복수의 진단 제어 플래그 각각은 제1 상태와 제2 상태를 가지며; 상기 추적 입력은 상기 처리 장치에 의해 처리된 상기 프로그램 명령의 지시를 수신할 수 있으며; 상기 진단 회로는 상기 조건 플래그 중 임의의 플래그를 갱신하는 상기 처리 장치의 지시에 응답하여 적어도 갱신 완료된 조건 플래그에 대응하는 조건 플래그를 상기 제1 상태에 배치할 수 있으며; 상기 진단 회로는 조건 플래그의 필요한 서브세트에 의존하는 조건 명령을 처리하는 상기 처리 장치의 지시에 응답하여; (a) 상기 필요한 서브세트의 조건 플래그에 대응하는 대응 진단 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 (a) 단계에서 상기 대응하는 진단 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있으면, 상기 추적 데이터 내에서, 상기 조건 명령에 대한 관련 추적 데이터 요소로서, 최소한 해당 대응하는 진단 제어 플래그가 상기 제1 상태에 있는 조건 플래그를 나타내는 제1 추적된 조건 값을 포함하는, 관련 추적 데이터 요소의 위치를 확인하여 상기 대응하는 진단 제어 플래그를 상기 제2 상태에 배치하고; (c) 상기 (a) 단계에서, 상기 대응하는 진단 제어 플래그 중 임의의 플래그가 상기 제2 상태에 있으면, 상기 추적 데이터 내에서, 적어도 하나의 이전 조건 명령에 대한 적어도 하나의 추가의 추적 데이터 요소로서, 최소한 해당 대응하는 진단 제어 플래그가 상기 제2 상태에 있는 조건 플래그를 나타내는 적어도 하나의 추가의 추적된 조건 값을 포함하는, 추가의 추적 데이터 요소의 위치를 확인하고; (d) 상기 제1의 추적된 조건 값과 상기 적어도 하나의 추가의 추적된 조건 값 중 적어도 하나에 의존하여 상기 조건 명령의 상기 처리 결과를 판정한다.
이 알고리즘은 각각의 조건 플래그에 대응하여 별개의 조건 제어 플래그가 제공되는 추적 유닛의 알고리즘에 대응한다. 진단 회로는 추적 스트림이 조건 플래그의 관련 서브세트의 값을 나타내는 주어진 조건 명령에 대한 추적 요소를 포함하는지 여부 또는 필요한 조건 플래그 값의 판정을 위해 초기 조건 명령에 대한 하나 이상의 추가의 추적 데이터 요소로 돌아가는 것이 필요한지 여부를 진단 제어 플래그로부터 판정할 수 있다. 현재 조건 명령의 처리 결과는 현재 조건 명령에 대한 추적 데이터 요소에 포함된 추적된 조건 값과 초기 조건 명령에 대한 적어도 하나의 초기 추적 데이터 요소에 포함된 추적된 조건 값 중 하나 또는 양자에 의존하여 판정될 수 있다.
다른 측면에 따르면, 본 발명은 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 나타내는 추적 데이터를 분석하는 진단 장치를 제공하며, 상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하기 위한 조건 상태 저장 수단을 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 진단 장치는:
적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여 생성되고 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 수신하기 위한 입력 수단과;
상기 적어도 하나의 선택된 명령을 위해 상기 추적 데이터 요소에 포함된 상기 추적된 조건 값에 의존하여 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 진단 수단을 포함하는 것을 특징으로 한다.
추가의 측면에 따르면, 본 발명은 데이터 처리 방법을 제공하며, 해당 방법은:
프로그램 명령에 응답하여, 처리 장치를 사용하여 처리 동작을 수행하는 단계와;
상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하는 단계와;
상기 처리 동작을 나타내는 추적 데이터 요소를 생성하는 단계를 포함하고;
상기 처리 동작 수행 단계는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하는 것을 포함하며;
상기 추적 데이터 요소 생성 단계는 적어도 하나의 선택된 명령에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하는 것을 포함하고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하는 것을 특징으로 한다.
또 다른 측면에 따르면, 본 발명은 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 나타내는 추적 데이터 요소를 분석하는 방법을 제공하며, 상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치를 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 방법은:
적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여 생성되고 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 수신하는 단계와;
상기 적어도 하나의 선택된 명령을 위해 상기 추적 데이터 요소에 포함된 상기 추적된 조건 값에 의존하여 상기 적어도 하나의 조건 명령의 처리 결과를 판정하는 단계를 포함하는 것을 특징으로 한다.
전술한 추적 데이터 요소의 분석 방법을 수행하도록 컴퓨터를 제어하기 위해 컴퓨터 프로그램이 제공될 수 있다. 컴퓨터 프로그램은 비-일시적 저장 매체 상에 제공될 수 있다.
추가의 측면에 따르면, 본 발명은 처리 장치를 제공하며, 해당 처리 장치는:
프로그램 명령에 응답하여 처리 동작을 수행하도록 된 처리 회로와;
상기 프로그램 명령에 응답하여 상기 처리 회로에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하도록 된 추적 회로를 포함하고;
상기 처리 회로는 적어도 하나의 조건 명령에 응답하여 상기 처리 회로의 조건에 의존하여 조건 동작을 수행하며;
상기 추적 회로는 제1 및 제2 상태를 갖는 조건 플래그를 저장하도록 되어 있으며;
상기 추적 회로는 상기 처리 회로의 상기 조건의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
상기 추적 회로는 적어도 하나의 조건 명령 중 하나를 처리하는 상기 처리 회로에 응답하여, (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 적어도 하나의 조건 명령의 처리 결과에 대한 정보를 제공하기 위한 결과 표시 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 한다.
주어진 조건 명령에 대한 조건 플래그 값을 추적할지 여부를 판정하기 위한 전술한 제어 알고리즘은 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하는 임의의 결과 표시 값의 추적에 적용하도록 확장될 수 있다. 예를 들면, 결과 표시 값은 전술한 바와 같이 추적된 조건 값을 포함할 수 있지만, 조건 명령의 통과/실패 결과와 같은 다른 종류의 결과 표시 값도 포함할 수 있다. 이러한 알고리즘을 이용하는 것에 의해 추적 데이터의 양이 감소되는데, 이는 결과 표시 값이 처리 회로의 조건의 갱신을 따르는 제1 조건 명령에 대해서 포함되지만, 처리 결과가 이전의 명령에 대해 생성된 추적 데이터를 사용하여 판정될 수 있는 후속 명령에 대해서는 포함되지 않기 때문이다.
다른 측면에 따르면, 본 발명은 처리 장치를 제공하며, 해당 장치는:
프로그램 명령에 응답하여 처리 동작을 수행하기 위한 처리 수단과;
상기 프로그램 명령에 응답하여 상기 처리 수단에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하기 위한 추적 수단을 포함하고;
상기 처리 수단은 적어도 하나의 조건 명령에 응답하여 상기 처리 수단의 조건에 의존하여 조건 동작을 수행하며;
상기 추적 수단은 제1 및 제2 상태를 갖는 제어 플래그를 저장하도록 되어 있고;
상기 추적 수단은 상기 적어도 하나의 조건 명령 중 하나를 처리하는 상기 처리 수단에 응답하여, (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 적어도 하나의 조건 명령의 처리 결과에 대한 정보를 제공하기 위한 결과 표시 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 한다.
다른 측면에 따르면, 본 발명은 데이터 처리 방법을 제공하며, 해당 방법은:
프로그램 명령에 응답하여, 처리 장치를 사용하여 처리 동작을 수행하는 단계로, 해당 처리 동작 수행 단계는 적어도 하나의 조건 명령에 응답하여 처리 회로의 조건에 의존하여 조건 동작을 수행하는 것을 포함하는 처리 동작 수행 단계와;
제1 및 제2 상태를 갖는 제어 플래그에 의존하여 생성되고 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하는 단계를 포함하고;
상기 추적 데이터 요소 생성 단계는:
상기 처리 회로의 상기 조건의 갱신에 응답하여, 상기 제어 플래그를 상기 제1 상태에 배치하는 단계와;
상기 적어도 하나의 조건 명령 중 하나의 처리에 응답하여, (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 적어도 하나의 조건 명령의 처리 결과에 대한 정보를 제공하기 위한 결과 표시 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 단계를 포함하는 것을 특징으로 한다.
본 기술의 추가의 측면, 실시예 및 특징들은 다음의 설명과 첨부 도면으로부터 분명해질 것이다.
도 1은 처리 장치, 추적 유닛 및 진단 장치를 개략적으로 도시하며;
도 2는 영국 캠브릿지에 소재한 ARM Limited 사에 의해 설계된 프로세서에 사용된 조건 플래그 및 조건 상태의 예를 나타내며;
도 3은 조건 플래그의 값의 특정 세트를 식별하기 위한 식별자의 예를 나타내며;
도 4는 조건 갱신 명령의 실행시 조건 플래그의 값을 추적하는 방법을 예시하며;
도 5는 도 4의 방법에서 생성된 추적 데이터를 분석하는 대응하는 방법을 예시하며;
도 6은 도 4의 방법에서 생성된 추적 스트림의 예와 도 5의 방법에 따라 추적 스트림의 분석의 예를 예시하며;
도 7은 중간 조건 명령이 없이 다중 조건 갱신 명령이 연속으로 생기는 일련의 프로그램 명령의 예를 예시하며;
도 8은 조건 명령의 실행시 조건 플래그의 값을 추적하는 방법을 예시하며;
도 9는 도 8의 방법에서 생성된 추적 데이터를 분석하는 대응하는 방법을 나타내며;
도 10은 도 8의 방법에서 생성된 추적 스트림의 예와 도 9의 방법에 따라 추적 스트림의 분석의 예를 예시하며;
도 11은 조건 명령의 실행시 적어도 조건 플래그의 필요 서브세트의 값을 추적하는 방법을 예시하며;
도 12는 도 11의 방법에서 생성된 추적 데이터를 분석하는 대응하는 방법을 예시하며;
도 13은 도 11의 방법을 이용하여 추적 스트림을 생성하는 예와 도 12의 방법을 이용하여 추적 스트림을 분석하는 예를 나타낸다.
도 1은 프로그램 명령에 응답하여 처리 동작을 수행하기 위한 처리 회로(4)를 포함하는 처리 장치(2)를 예시한다. 처리 장치(2)는 처리 회로(4)에 의해 실행될 프로그램 명령 및/또는 처리 회로(4)에 의해 처리될 데이터를 저장하기 위한 하나 이상의 캐시 유닛 또는 메모리 유닛을 포함하는 메모리 시스템(8)을 포함한다.
처리 장치(2)는 처리 회로(4)에 의해 수행된 처리 동작을 모니터링하기 위한 추적 회로(6)를 포함한다. 추적 회로(6)는 처리 회로(4)에 의해 수행된 처리 동작의 특징을 나타내는 추적 데이터 요소를 생성한다. 추적 회로(6)는 생성된 추적 데이터 요소를 출력 포트(10)를 통해 출력한다. 추적 회로(6)는 처리 회로(4)와 동일한 집적 회로상에 구현될 필요는 없으며, 소정의 실시예에서 별도의 추적 유닛으로서 제공될 수 있다.
추적 회로(6)에 의해 생성된 추적 데이터 요소의 분석을 위해 진단 장치(12)가 제공된다. 진단 장치(12)는 입력 포트(14)를 통해 추적 데이터 요소를 수신한다. 진단 장치(12)는 처리 회로(4)에 의해 어떤 프로그램 명령이 실행되었는지를 나타내는 지시도 수신한다. 이 지시는 추적 스트림 중에서 어떤 명령이 실행되었는지를 나타내도록 추적 회로(6)에 의해 제공될 수 있다. 대안적으로, 진단 장치(12)는 처리 회로(4)에 의해 수행된 제1 프로그램 명령의 메모리 시스템(8) 내의 위치를 지시하는 어드레스를 포함할 수 있다. 진단 장치(12)는 처리 회로(4)에 의해 실행된 프로그램의 대응하는 복사본을 저장하기 위한 메모리(도 1에 도시 안됨)도 포함할 수 있다. 진단 장치(12)는 처리 회로(4)에 의해 수행된 명령을 단계별로 분석하고, 추적 데이터 요소의 스트림 내에 포함된 정보를 기초로 명령의 처리 결과를 판정한다.
추적 데이터 요소는 추적 회로(6)로부터 직접 진단 장치(12)로 출력될 필요가 없지만, 예를 들면, 메모리 또는 다른 저장 디바이스에 저장된 후 원하는 경우 진단 장치(12)에 의해 저장 디바이스로부터 액세스될 수 있다. 진단 장치(12)는 예컨대 추적 분석 방법을 실행하도록 프로그램밍된 범용 컴퓨터일 수 있다.
처리 장치(2)는 해당 처리 장치(2)의 각각의 조건을 나타내는 하나 이상의 조건 플래그(22)를 저장하기 위한 저장 위치, 예컨대 조건 상태 레지스터(CPSR)(20)를 포함한다. 영국 캠브릿지 소재의 ARM Limited 사에 의해 설계된 프로세서에서, 조건 플래그(22)는 처리 결과가 음의 값, 제로, 자리올림 필요 또는 오버플로 야기의 여부를 나타내기 위한 NZCV(Negative, Zero, Carry, oVerflow) 플래그를 포함할 수 있다. 도 2는 조건 상태 레지스터(20) 내의 조건 플래그(22)의 다른 조합에 의해 나타낼 수 있는 다양한 조건 상태를 예시한다.
조건 플래그(22)의 저장을 위한 저장 위치는 조건 상태 레지스터(20)일 필요는 없지만 메모리 시스템(8) 내의 저장 위치 또는 임의의 다른 종류의 저장 위치일 수도 있음을 알 것이다.
처리 회로(4)는 적어도 하나의 조건 갱신 명령에 응답하여 조건 상태 레지스터(20) 내의 조건 플래그(22) 중 하나 이상을 갱신할 수 있다. 예를 들면, 비교 명령은 2개의 데이터 값을 비교하고 해당 비교에 따라 플래그를 갱신함으로써 예컨대, 데이터 값이 동일하였는지, 또는 하나의 데이터 값이 다른 값보다 작거나 컸는지 여부를 나타낼 수 있다. 조건 플래그(22)가 갱신되도록 하는 임의의 명령은 조건 갱신 명령인 것으로 간주될 수 있다. 예를 들면, ARM 명령 세팅 아키텍처에서, TST, TEQ, CMP 및 CMN 명령은 조건 갱신 명령의 예이다.
처리 회로(4)는 또한 주어진 조건에 관한 적어도 하나의 조건 명령에 응답할 수 있다. 조건 명령이 실행되면, 조건 플래그(22)의 값은 주어진 조건과 비교된다. 조건 플래그(22)가 조건을 만족하면, 관련 처리 동작이 수행된다. 조건이 만족되지 않으면, 관련 처리 동작은 수행되지 않는다(대안적으로, 소정의 종류의 조건 명령의 경우, 조건이 만족되지 않으면 관련 처리 동작에 대한 상이한 처리 동작이 수행될 수 있다).
예를 들면, 조건 가산 명령(ADDEQ)은 EQ 조건과 관련된다. 도 2는 Z 플래그가 설정되면 EQ 조건이 만족됨을 나타낸다. 조건 가산 명령(ADDEQ)이 실행되는 경우, Z 플래그가 설정되면, 관련 가산 동작이 수행되는 반면, Z 플래그가 설정되지 않으면, 가산 동작은 수행되지 않을 것이다.
조건 명령의 처리 결과는 명령 스트림 단독으로부터 판정될 수 없는데, 이는 명령 스트림이 조건의 만족 여부를 판정하기 위한 정보를 담고 있지 않기 때문이다. 그러므로, 추적 회로(6)는 적어도 하나의 선택된 명령에 응답하여, 조건 플래그(22)의 값을 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한다. 진단 장치(12)는 추적 데이터 요소에 포함된 추적된 조건 값을 이용하여 조건의 만족 여부를 판정할 수 있으며, 그에 따라 대응하는 조건 명령의 처리 결과를 판정할 수 있다.
추적 회로(6)는 조건 플래그(22)의 값이 추적되었는지 여부를 모니터링하기 위해 하나 이상의 제어 플래그(26)를 유지한다. 추적 회로(6)는 하나 이상의 제어 플래그(26)의 현재 값을 기초로 주어진 명령의 실행시 조건 플래그 값을 추적할지 여부를 선택할 수 있다. 일 실시예에서, 추적 회로(6)는 단일 제어 플래그(26)(하기에 설명되는 바와 같이 도 8-10의 실시예 참조)를 포함하는 반면, 다른 실시예에서 추적 회로(6)는 조건 플래그(22)(도 11-13과 관련하여 하기에 설명되는 실시예 참조) 중 하나에 각각 대응하는 다중 제어 플래그(26)를 포함한다.
진단 회로(16)는 추적된 조건 값을 포함하는 추적 데이터 요소가 주어진 프로그램 명령에 대해 추적 스트림에 제공될 것의 예상 여부를 판정하기 위해 추적 회로(6)의 제어 플래그(26)에 대응하는 방식으로 사용되는 대응하는 세트의 제어 플래그(28)를 유지한다.
추적 데이터 요소 내의 추적된 조건 값은 다른 방식으로 나타낼 수 있다. 일례에서, 추적 회로(6)는 추적 데이터 요소 내의 조건 플래그(22) 중 적어도 서브세트의 실제 값을 포함한다. 조건 명령이 오직 서브세트의 조건 플래그(22)에 의존하는 경우, 추적 회로(6)는 조건 플래그 값의 해당 관련 서브세트만을 포함하거나 조건 플래그(22) 모두를 포함할 수 있다.
대안적으로, 추적 회로(6)는 추적 데이터 요소 내에 조건 플래그(22)의 값의 측정 조합을 나타내는 식별 코드를 포함할 수 있다. 이것은 조건 값의 소정 조합이 다른 조합에 비해 보편적이라면 효율적인 인코딩을 제공할 수 있다. 예를 들면, 도 3은 2-비트 식별자가 조건 상태 중 3가지 상태(예, C 플래그가 설정된 상태, N 플래그가 설정된 상태, 및 Z 및 C 플래그가 설정된 상태)에 사용되는 예를 보여준다. 4-비트 식별자는 상이한 조건 상태 중 3가지 이상의 상태에 사용된다. 조건 플래그 값의 이외의 조합 중 하나가 필요하면, 현재 조건 플래그 값에 대한 별도의 지시가 도 3에 예시된 구성과 다른 인코딩을 이용하여 추적 데이터 요소 내에 제공될 수 있다.
식별자의 인코딩과 조건 상태가 특정 식별자에 의해 표현되는 선택은 단지 예시에 불과함을 알 것이다. 그럼에도, 해당 예는 최소 비트의 식별자를 가장 빈번하게 생기는 조건 상태에 할당하는 것에 의해 추적 데이터의 총량이 감소될 수 있음을 보여준다. 예를 들면, 처리 장치(2)가 시간의 70% 동안 2-비트 식별자를 갖는 3가지 조건 상태 중 하나에, 시간의 29% 동안 4-비트 식별자를 갖는 3가지 조건 상태 중 하나에, 그리고 시간의 1% 동안 나머지 상태 중 하나에(및 다른 상태가 말하자면 8-비트 식별자에 의해 표현됨) 있는 경우, 현재 조건 상태의 식별에 사용되는 비트의 평균 비트 수는 2*0.7+4*0.29+8*0.01=2.64(*는 곱셈 부호)가 될 것이다. 따라서, 현재 조건 상태를 나타내도록 추적 스트림 내에 포함된 평균 비트 수는 추적 데이터 요소가 단순히 조건 플래그의 현재 값에 포함된 경우 사용되게 되는 4 비트보다 작게 된다.
추적 회로(6)는 처리 회로(4)에 의해 실행되는 프로그램에서 다른 명령으로 조건 플래그(22)의 값을 추적할 수 있다. 추적 회로(6)는 조건 플래그 표시 값을 포함하는 추적 데이터 요소의 생성을 시발시키기 위해 하나 이상의 선택된 명령을 선택할 수 있다. 선택된 명령은 조건 명령일 수 있으나, 다른 명령일 수도 있다.
예를 들면, 도 4-6은 추적된 조건 값을 포함하는 추적 데이터 요소가 조건 갱신 명령의 실행시 생성되는 예를 보여준다. 도 4는 처리 회로(4)의 동작에 응답하여 추적 데이터를 생성하는 방법을 보여준다. 40 단계에서, 처리 회로(4)는 실행되는 프로그램의 다음 명령을 처리하고, 추적 회로(6)는 처리 회로(4)에 의한 해당 명령의 처리를 모니터링한다. 42 단계에서, 추적 회로(6)는 처리 회로(4)에 의해 실행되는 명령이 조건 갱신 명령인지 여부를 판정한다. 해당 명령이 조건 갱신 명령이면, 44 단계에서 추적 회로(6)는 조건 갱신 명령의 실행으로부터 얻어지는 조건 플래그(22)의 갱신된 값을 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성 및 출력한다. 다른 한편, 해당 명령이 조건 갱신 명령이 아니면, 44 단계ㄴㄴ 생략된다. 46 단계에서, 처리 회로(4)에 의해 처리될 다른 명령이 존재하는지 여부가 판정된다. 다른 명령이 존재하면, 방법은 40 단계로 복귀하는 반면, 만일 그렇지 않고 남아 있는 명령이 없으면, 방법은 48 단계에서 종료한다.
도 5는 도 4의 방법을 이용하여 추적 회로(6)에 의해 생성된 추적 스트림을 분석하기 위한 대응하는 진단 방법을 나타낸다. 진단 장치(12)는 처리 회로(4)에 의해 어떤 명령이 실행되었는지의 지시를 수신한다. 50 단계에서, 진단 회로(16)는 처리 회로(4)에 의해 실행되고 있는 것으로 지시된 다음 명령을 분석한다. 52 단계에서, 진단 회로(16)는 다음 명령이 조건 명령인지 여부를 판정한다. 해당 명령이 조건 명령이면, 54 단계에서 진단 회로(16)는 추적 데이터 스트림 내에서 프로그램 명령의 지시에 지시된 최근의 조건 갱신 명령과 관련된 추적 데이터 요소의 위치를 확인한다. 56 단계에서, 진단 회로(16)는 위치 확인된 추적 데이터 요소 내에 포함된 추적된 조건 값을 기초로 조건 명령의 처리 결과를 판정한다. 예를 들면, 진단 회로(16)는 추적된 조건 값을 이용하여 조건 명령과 관련된 조건이 만족되었는지 여부와 그에 따라 관련 처리가 수행되었는지 여부를 판정할 수 있다. 52 단계에서 다음 명령이 조건 명령이 아닌 것으로 판정되면, 54 단계와 56 단계는 생략된다. 58 단계에서, 분석될 다른 명령이 존재하는지 여부가 판정된다. 다른 명령이 존재하면, 방법은 50 단계로 복귀되는 반면, 더 이상의 명령이 존재하지 않으면, 방법은 60 단계에서 종료된다.
도 6은 도 4의 방법에 따른 추적 스트림의 생성과 도 5의 방법에 따른 추적 스트림의 분석의 예를 예시한다. 도 6은 처리 회로(4)에 의해 실행된 프로그램 명령 세트를 보여준다. 분기 명령이 실행되는 경우, 추적 데이터 요소는 분기가 취해졌는지 여부를 나타내면서 생성된다. 조건 갱신 명령(예, CMP)과 접하는 경우, 도 4의 44 단계에 따라 추적된 조건 값(CPSR)을 포함하는 추적 데이터 요소가 생성된다. 추적 스트림을 분석시, 진단 장치는 추적된 조건 값을 이용하여 임의의 후속하는 조건 명령(예, 도 6에 예시된 MOVNE, MOVEQ, ADDHI 명령)의 처리 결과를 판정할 수 있다.
일부 명령은 조건 갱신 명령과 조건 명령 양자일 수 있다. 예를 들면, 도 6의 메모리 위치(2100)에서의 프로그램 명령은 조건 플래그(22)의 현재 값이 동일하지 않음(Not Equal: NE) 조건을 만족하는지 여부를 판정하기 위해 처리 회로(4)를 제어하기 위한 조건 비교 명령(CCMPNE)이다. 동일하지 않은 조건이 만족되면, 처리 회로(4)는 비교 동작을 수행하고 비교 결과를 기초로 조건 플래그(22)를 갱신한다. CCMPNE 명령이 조건 명령이면, 진단 회로(16)는 조건 플래그의 가장 최근 갱신시 추적 스트림 내에 포함된 추적된 조건 값(즉, 메모리 위치(2000)에 있는 비교 명령(CMP)에 대해 포함된 CPSR 값)을 기초로 CCMPNE 명령의 처리 결과를 판정한다. CCMPNE 명령의 실행시 NE 조건의 만족되면, CCMPNE 명령도 조건 갱신 명령이므로 추적 회로(6)는 조건 플래그(22)의 갱신된 값을 나타내는 추적된 조건 값을 포함하는 명령(CCMPNE)에 대한 추적 데이터 요소를 생성한다. 이 추적 데이터 요소는 임의의 후속하는 조건 명령의 결과를 판정하기 위해 사용될 수 있다.
대안적으로, 소정의 예에서, CCMPNE 명령은 NE 조건의 만족 여부에 무관하게 조건 갱신 명령으로서 간주될 수 있으며, 따라서 조건 플래그의 값을 나타내는 추적 데이터 요소는 CCMPNE 명령에 대해 항상 생성될 수 있다. 이것은 NE 조건이 추적시 아직 계산되지 않은 경우 유용할 수 있다.
도 4-6에 예시된 기술은 단일 조건 갱신 명령 후 동일 세트의 조건 값에 모두 의존하는 일련의 조건 명령이 후속될 때 유용할 수 있는데, 이는 이 경우 여러 후속 명령의 결과의 판정은 작은 양의 추적 데이터면 충분하기 때문이다.
그러나, 일부의 경우, 조건 플래그의 갱신된 값을 이용하는 임의의 중간 조건 명령이 없이 연속으로 생기는 다수의 갱신 명령이 존재할 수 있다. 예를 들면, 도 7에서 일련의 프로그램 명령은 조건 플래그 갱신을 가져오는 다수의 비교 CMP 및 비트 테스트 TST 명령을 포함하지만, 이들 명령 중 처음 4개 명령은 조건 명령에 의해 사용되는 갱신된 값이 없이 플래그를 갱신한다. 이러한 경우, 조건 명령의 실행시 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하는 것이 더 효율적일 수 있다(예, 도 8-10 및 도 11-13과 관련하여 하기에 설명되는 바와 같이). 도 7에 예시된 예에서, 추적 데이터 요소는 매 조건 갱신의 경우보다는 조건 명령(MOVNE)의 실행시 생성될 수 있다.
이들 기술의 조합이 가능할 것이므로 일부 추적 유닛은 조건 갱신 명령의 실행시와 조건 명령의 실행시 모두 추적된 조건 값을 생성할 수 있음을 알 것이다.
도 8은 조건 명령의 실행시 조건 플래그(22)가 추적되는 추적 방법을 예시한다. 본 실시예에서, 추적 회로(6)는 조건 플래그(22)의 추적 여부를 판정하기 위해 제어 플래그(26)를 유지한다. 제어 플래그(26)는 "제거" 상태와 "설정" 상태를 갖는다(예, "제거" 상태는 0 값을 갖는 제어 플래그(26)이고 "설정" 상태는 1 값을 갖는 제어 플래그(26)이거나 그 반대일 수 있다).
도 8의 70 단계에서, 추적 회로(6)는 다음 명령을 실행하는 처리 회로(4)를 모니터링한다. 72 단계에서, 추적 회로(6)는 해당 명령이 조건 명령인지 여부를 판정한다. 해당 명령이 조건 명령이면, 74 단계에서 추적 회로(6)는 제어 플래그의 제거 여부를 판정한다. 제어 플래그가 제거되면, 76 단계에서 추적 회로(6)는 조건 상태 레지스터(20)의 현재 상태를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성 및 출력한다. 이후, 78 단계에서 제어 플래그가 설정된다. 다른 한편, 74 단계에서 제어 플래그가 설정되었으면, 76 단계와 78 단계는 생략된다. 72 단계에서 명령이 조건 명령이 아닌 것으로 판정되면, 74-78 단계는 생략된다.
이후, 80 단계에서, 다음 명령이 조건 갱신 명령인지 여부가 판정된다. 일부 명령은 조건 명령과 조건 갱신 명령 양자일 수 있음에 유의하라. 명령이 조건 갱신 명령이면, 82 단계에서, 제어 플래그는 제거된다. 그렇지 않으면, 82 단계는 생략된다. 다음, 84 단계에서, 처리 회로(4)에 의해 수행될 다른 명령이 존재하는지 여부가 판정된다. 다른 명령이 존재하면, 방법은 70 단계로 복귀한다. 더 이상의 명령이 존재하지 않으면, 방법은 86 단계에서 종료한다.
도 8의 방법을 실현하기 위한 일부 의사 코드가 아래에 나타낸다("마커"란 용어는 제어 플래그(26)를 지시한다):
명령에서:
명령이 조건이면:
마커가 제거되는 경우:
CPSR을 추적
마커를 설정
명령이 CPSR을 갱신하면:
마커 제거
도 8의 방법은 추적 회로(6)가 조건 갱신 명령에 후속하여 생기는 제1 조건 명령에 대한 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하기 때문에 추적 데이터의 양을 감소기키는 것을 돕는다. 후속하는 조건 명령의 경우, 이전의 조건 명령이 조건 플래그(22)의 상태를 나타내는 정보를 포함하는 관련 추적 데이터 요소를 이미 가지고 있으므로 조건 값을 추적할 필요가 없다.
도 9는 도 8의 방법에서 생성된 추적 스트림을 분석하기 위한 대응하는 진단 방법을 보여준다. 진단 장치(12)는 추적 회로(6)의 제어 플래그(26)의 상태에 대응하는 "제거" 및 "설정" 상태를 갖는 제어 플래그(28)를 갖는다. 100 단계에서, 진단 회로(16)는 처리 회로(4)에 의해 처리된 프로그램 명령의 지시 내에 포함된 다음 명령을 분석한다. 102 단계에서, 조건 명령의 지시가 존재하는지 여부가 판정된다. 명령이 조건 명령이면, 104 단계에서 진단 제어 플래그(28)의 제거 여부가 판정된다. 진단 제어 플래그가 제거되면, 106 단계에서 진단 회로(16)는 해당 조건 명령에 대한 관련 추적 데이터 요소의 위치를 확인한 후 108 단계에서 관련 추적 데이터 요소에 포함된 추적된 조건 값을 기초로 조건 명령의 처리 결과를 판정한다. 110 단계에서, 진단 제어 플래그는 "설정" 상태로 배치된다.
다른 한편, 104 단계에서 진단 제어 플래그가 제거되지 않았으면, 방법은 112 단계로 진행되어 해당 단계에서 추가의 추적 데이터 요소가 진단 회로(16)에 의해 위치 확인된다. 추가의 추적 데이터 요소는 이전에 분석된 조건 명령과 관련된 데이터 요소이다. 114 단계에서, 진단 회로(16)는 이전에 분석된 조건 명령에 대해 생성된 추가의 추적 데이터 요소에 포함된 추적된 조건 값을 기초로 현재 분석된 조건 명령의 처리 결과를 판정한다. 102 단계에서, 명령이 조건 명령이 아닌 것으로 판정되면, 104-114 단계는 생략된다.
이후, 116 단계에서, 분석되는 명령이 조건 갱신 명령인지 여부가 판정된다. 명령은 조건 명령과 조건 갱신 명령 양자일 수 있다. 명령이 조건 갱신 명령이면, 118 단계에서 진단 제어 플래그(28)가 제거되는 반면, 명령이 조건 갱신 명령이 아니면, 118 단계는 생략된다. 120 단계에서 분석된 다른 명령이 있는지 여부가 판정된다. 다른 명령이 존재하면, 방법은 100 단계로 복귀되는 반면, 그렇지 않으면 방법은 122 단계에서 종료한다.
따라서, 진단 회로는 추적 회로(6)의 제어 플래그(26)에 대응하는 진단 제어 플래그(28)를 사용하여 관련 추적 데이터 요소가 주어진 조건 명령에 대해 추적 스트림 내에 포함되는 것으로 예상되는지 여부를 판정한다. 이러한 관련 추적 데이터 요소가 존재하면, 조건 명령의 처리 결과는 관련 추적 데이터 요소에 포함된 추적된 조건 값을 기초로 판정될 수 있다. 관련 추적 데이터 요소가 존재하지 않으면, 현재 조건 명령의 처리 결과가 판정될 수 있도록 하는 추적된 조건 값을 포함할 것인 이전의 조건 명령과 관련된 추적 데이터 요소가 존재할 것이다. 조건 갱신 명령과 접하는 경우, 진단 제어 플래그(28)가 제거되어 다음 조건 명령이 관련 추적 데이터 요소를 가지는 것으로 예상됨을 나타낸다.
도 10은 도 8 및 도 9의 방법을 도 6에 예시된 프로그램 명령의 스트림에 적용하는 예를 나타낸다. 다시 말하면, 메모리 위치(1600)에서의 분기 명령의 분기 취득 결과가 추적된다. 메모리 위치(2000)에 저장된 조건 갱신 명령(CMP)의 실행에 응답하여, 도 8의 82 단계에 따르면, 추적 회로(6)는 그 제어 플래그(26)를 제거한다. 유사한 방식으로, 진단 회로(16)가 명령을 분석할 때, 진단 회로는 도 9의 118 단계에 따라 진단 제어 플래그(28)를 제거하는 것에 의해 조건 갱신 명령(CMP)의 지시에 응답할 것이다.
추적 회로(6)가 메모리 위치(2004)에 저장된 조건 명령(MOVNE)을 접하는 경우, 추적 회로(6)는 제어 플래그(26)가 현재 제거된 상태에 있음을 판정하고, 그에 따라 도 8의 76 단계에서 추적된 조건 값(CPSR)을 포함하는 추적 데이터 요소가 생성된다. 이후 도 8의 78 단계에 따라 제어 플래그가 설정된다. 대응하는 방식으로, 명령의 분석시, 진단 회로(16)는 메모리 위치(2004)에서 조건 명령(MOVNE)의 지시를 감지할 것이고, 추적 스트림 내에서 관련 추적 데이터 요소의 위치를 확인하고 추적 데이터 요소에 포함된 추적된 조건 값을 기초로 MOVNE 명령의 처리 결과를 판정하는 것에 의해 제거되는 진단 제어 플래그(28)에 응답할 것이다. 이후 진단 회로(16)는 도 9의 110 단계에서 진단 제어 플래그(28)를 설정한다.
이후, 메모리 위치(2008 및 200C)에서의 후속하는 조건 명령의 경우, 추적 회로(6)는 제어 플래그(26)가 설정 상태에 있음을 감지하여 대응하는 추적 데이터 요소를 생성하지 않는다. 대응하는 방식으로, 진단 회로(16)는 진단 제어 플래그(28)가 설정 상태에 있음을 감지하여 도 9의 후속 단계(112, 114)는 메모리 위치(2004)에 저장된 이전의 조건 명령과 관련된 추적 데이터 요소의 위치를 확인한다. 진단 회로(16)는 메모리 위치(2004)의 명령에 대한 이전의 추적 데이터 요소를 기초로 메모리 위치(2008 및 200C)에서의 명령의 처리 결과를 판정한다.
이 방식으로, 조건 플래그(22)의 갱신에 후속하여 실행될 제1 조건 명령이 추적된 조건 값을 포함하는 추적 데이터 요소의 생성을 야기하는 추적 스트림이 생성될 수 있다.
도 11-13은 추적 회로(6)가 어떤 조건 플래그(22)가 이미 추적되었는지를 모니터링하고, 조건 명령에 대해 추적 데이터 요소를 생성할 때 아직은 추적되지 않은 해당 조건 명령에 의해 요구되는 추가의 조건 플래그를 추적하는 실시예를 예시한다. 이 방법은 조건 플래그(22) 중 개별 플래그에 각각 대응하는 복수의 제어 플래그(26)를 사용한다. 각각의 제어ㅕ 플래그(26)는 "제거" 상태와 "설정" 상태를 가진다. 진단 회로(16)는 역시 "제거" 상태와 "설정" 상태를 갖는 대응하는 그룹의 진단 제어 플래그(28)를 갖는다.
도 11은 처리 회로(4)의 동작을 추적하는 방법을 예시한다. 140 단계에서, 처리 회로(4)는 다음 명령을 실행하고, 해당 명령의 실행은 추적 회로(6)에 의해 모니터링된다. 142 단계에서, 해당 명령이 조건 명령인지 여부가 판정된다. 해당 명령이 조건 명령이면, 144 단계에서 추적 회로(6)는 조건 명령의 결과를 판정하는데 필요한 조건 플래그(22)의 서브세트를 판정한다. 예를 들면, 도 2에 예시된 각각의 조건의 경우, 표에 나타낸 대응하는 플래그는 조건 플래그의 필요 서브세트이다. 예를 들면 HI 조건은 C 및 Z 플래그를 필요로 한다.
146 단계에서, 추적 회로(6)는 조건 플래그(22)의 필요 서브세트에 대응하는 제어 플래그(26) 중 임의의 플래그의 제거 여부를 판정한다. 조건 플래그의 필요 서브세트에 대응하는 어떤 제어 플래그도 제거되지 않으면, 방법은 152 단계로 진행된다. 조건 플래그의 필요 서브세트에 대응하는 제어 플래그 중 임의의 하나 이상의 플래그가 제거되면, 148 단계에서 추적 회로(6)는 대응하는 제어 플래그(22)가 제거되는 적어도 필요 서브세트의 조건 플래그(22)를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성 및 출력한다. 선택적으로, 추적 조건 값은 다른 조건 플래그도 나타낼 수 있지만, 조건 플래그(22) 모두를 나타낼 수 있다. 이후, 150 단계에서, 추적 회로(6)는 추적된 조건 값에 지시된 조건 플래그에 대응하는 제어 플래그를 설정한다. 142 단계에서 명령이 조건 명령이 아닌 것으로 판정되면, 144-150 단계는 생략된다.
152 단계에서, 추적 회로(6)는 처리 회로(4)에 의해 실행되는 명령이 조건 갱신 명령인지 여부를 판정한다. 해당 명령이 조건 갱신 명령이면, 154 단계에서 추적 회로(6)는 적어도, 조건 갱신 명령의 결과로서 갱신되는 조건 플래그(22)에 대응하는 제어 플래그(26)를 제거한다. 선택적으로, 154 단계에서, 추적 회로(6)는 다른 제어 플래그(26)를 제거할 수도 있지만, 제어 플래그(26) 모두를 제거할 수 있다. 해당 명령이 조건 갱신 명령이 아니면, 154 단계는 생략된다. 156 단계에서, 처리 회로(4)에 의해 처리될 다른 명령의 존재 여부가 판정된다. 이러한 명령이 존재하면, 방법은 140 단계로 복귀한다. 그렇지 않으면, 방법은 158 단계에서 종료한다.
도 11의 방법을 실현하기 위한 의사 코드가 아래에 나타낸다("마커"란 용어는 제어 플래그(26)를 말한다):
명령에서:
명령이 조건이면:
해당 명령에 의해 필요한 플래그에 대한 임의의 마커가 제거되면:
적어도 필요 플래그를 추적하고
필요 플래그에 대한 마커를 설정하고
해당 명령이 CPSR을 갱신하면:
적어도 갱신된 플래그에 대한 마커를 제거
대안적으로 도 11의 방법을 실현하기 위해 다음의 의사 코드가 사용될 수 있다:
명령에서:
해당 명령이 조건이면:
해당 명령에 의해 필요한 플래그에 대한 임의의 마커가 제거되면:
적어도 필요한 플래그를 추적하고
추적된 플래그에 대한 마커를 설정하고
해당 명령이 CPSR을 갱신하면:
적어도 갱신된 플래그에 대한 마커를 제거
도 12는 도 11의 방법에 의해 생성된 추적 스트림의 분석 방법을 예시한다. 160 단계에서, 진단 회로(16)는 처리 회로(4)에 의해 실행되는 명령의 지시에 나타낸 다음 명령을 분석한다. 162 단계에서, 다음 명령이 조건 명령인 것으로 판정되면, 164 단계에서 진단 회로(16)는 해당 명령에 대해 필요한 조건 플래그의 서브세트를 판정하고 조건 플래그의 필요한 서브세트에 대응하는 진단 제어 플래그(28)의 제거 또는 설정 여부를 판정한다. 166 단계에서, 164 단계가 조건 플래그의 필요 서브세트에 대응하는 진단 제어 플래그(28)가 제거되었음을 판정하면, 진단 회로(16)는 추적 스트림 내에서 제1의 추적된 조건 값을 포함하는 관련 추적 데이터 요소의 위치를 확인한다. 제1의 추적된 조건 값은 적어도, 제거된 진단 제어 플래그(28)에 대응하는 조건 플래그의 필요 서브세트의 값을 나타낸다. 이후 진단 회로(16)는 제거되는 한편으로 원하는 서브세트의 조건 플래그(22)에 대응하는 진단 제어 플래그(28)를 설정한다.
168 단계에서, 164 단계가 조건 플래그의 필요 서브세트에 대응하는 임의의 진단 제어 플래그(28)가 설정되었음을 판정하면, 진단 회로(16)는 적어도 하나의 이전의 조건 명령에 대해 적어도 하나의 추가의 추적 데이터 요소의 위치를 확인한다. 추가의 추적 데이터 요소는 설정된 진단 제어 플래그에 대응하는 조건 플래그의 값을 나타내는 적어도 하나의 추적된 조건 값을 포함한다. 이후, 170 단계에서, 진단 회로(16)는 제1의 추적된 조건 값 및/또는 적어도 하나의 추가의 추적된 조건 값을 분석한 후(166 단계와 168 단계에서 어떤 추적된 조건 값이 액세스되었는지에 따라) 추적된 조건 값을 기초로 현재 조건 명령의 처리 결과를 판정한다. 162 단계에서, 명령이 조건 명령이 아닌 것으로 판정되면, 164-170 단계는 생략된다.
172 단계에서, 진단 회로(16)는 다음 명령이 조건 갱신 명령인지 여부를 판정한다. 다음 명령이 조건 갱신 명령이면, 174 단계에서 진단 회로(16)는 적어도, 조건 갱신 명령의 실행 결과로서 갱신된 조건 플래그(22)에 대응하는 진단 제어 플래그(28)를 제거한다(진단 회로(16)는 조건 갱신 명령의 유도된 처리 결과를 기초로 어떤 조건 플래그(22)가 갱신되었는지를 판정할 수 있다). 선택적으로, 174 단계에서, 진단 회로(16)는 다른 진단 제어 플래그(28)를 제거할 수 있지만, 진단 제어 플래그(28) 모두를 제거할 수 있다. 172 단계에서, 다음 명령이 조건 갱신 명령이 아니면, 174 단계는 생략된다. 176 단계에서, 분석될 다른 명령의 존재 여부가 판정된다. 다른 명령이 존재하면, 방법은 160 단계로 복귀되는 반면, 그렇지 않으면, 방법은 178 단계에서 종료된다.
도 13은 도 11 및 도 12의 방법을 이전에 예시된 프로그램 명령의 스트림에 적용하는 예를 예시한다. 해당 예에서, 모든 제어 플래그(26)와 진단 제어 플래그(28)는 조건 갱신 명령에 응답하여 제거되는 것으로 가정되지만, 전술한 바와 같이 추적 회로(6)와 진단 회로(16)가 갱신 완료된 조건 플래그(22)에 대응하는 제어 플래그(26, 28)만 제거하는 것도 가능하다.
도 13에서, 분기 명령에 대해 생성된 추적 데이터 요소에 분기 취득 결과가 지시된다. 분기 취득 결과는 어떤 명령이 처리 회로(4)에 의해 실행되었는지를 판정하기 위해 진단 회로(16)에 의해 사용될 수 있다.
메모리 위치(2000)에서 조건 갱신 명령(CMP)과 접하는 경우, 추적 회로(6)는 모든 제어 플래그(26)를 제거한다. 유사하게, 진단 회로(16)가 조건 갱신 명령(CMP)를 접하는 경우, 진단 회로는 해당 진단 제어 플래그(28) 모두를 제거한다.
메모리 위치(2004)에서 조건 명령(MOVNE)의 실행시, 추적 회로(6)는 "동일하지 않음" 조건(NE)의 경우 조건 플래그의 필요 서브세트가 Z 플래그(도 2 참조)임을 판정한다. 도 11의 146 단계에서, 추적 회로(6)는 Z 조건 플래그에 대응하는 제어 플래그(26)가 제거되는 것을 판정하여 148 단계에서 적어도 Z 플래그의 값을 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한다. 이후 Z 플래그에 대응하는 제어 플래그는 도 11의 150 단계에서 설정된다.
대응하는 방식으로, 추적 스트림의 분석시, 진단 회로(16)는 메모리 위치(2004)에서 조건 명령(MOVNE)과 접하여 조건 플래그의 필요 서브세트가 Z 플래그임을 판정한다. 이 시점에서, Z 조건 플래그에 대응하는 진단 제어 플래그(28)가 제거되며, 그에 따라 진단 회로(16)는 MOVNE 명령에 대응하는 관련 추적 데이터 요소가 존재함을 판정한다. 진단 회로(16)는 Z 플래그의 값을 나타내는 추적된 조건 값을 포함하는 관련 추적 데이터 요소의 위치를 확인한다. 진단 회로(16)는 메모리 위치(2004)에 저장된 MOVNE 명령에 대해 추적된 조건 값을 기초로 처리 결과를 판정한다. 이후 진단 회로(16)는 Z 플래그에 대응하는 진단 제어 플래그(28)를 설정한다.
추적 회로(6)가 메모리 위치(2008)에 저장된 조건 명령(MOVNE)과 접하면, 추적 회로(6)는 "동일" 조건(EQ)이 만족 여부를 판정하기 위한 플래그의 필요 서브세트가 다시 Z 플래그임을 판정한다(도 2 참조). 도 11의 146 단계에서, 추적 회로(6)는 Z 플래그에 대응하는 제어 플래그가 설정됨으로써 도 11의 148 단계 및 150 단계를 생략하여 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하지 않음을 판정한다. 추적 스트림의 분석시, 진단 회로(16)는 유사하게 Z 플래그에 대응하는 진단 제어 플래그(28)가 설정됨을 감지할 수 있다. 그러므로, 진단 회로(16)는 도 12의 168 단계에서 메모리 위치(2004)에 저장된 이전의 조건 명령(MOVNE)에 대한 추적 데이터 요소의 위치를 확인할 것이고 MOVNE 명령에 대해 추적 데이터 요소에 포함된 추적된 조건 값을 기초로 MOVEQ 명령의 결과를 판정할 것이다.
메모리 위치(200C)에, HI 조건에 의존하는 조건 추가 명령(ADDHI)이 존재한다. 해당 명령이 실행되면, 추적 회로(6)는 조건 플래그의 필요 서브세트가 C 플래그 및 Z 플래그임을 판정한다(도 2 참조). 추적 회로(6)는 C 플래그 및 Z 플래그에 대응하는 대응 제어 플래그(26)의 상태를 판정하고, Z 조건 플래그에 대등하는 제어 플래그(26)가 설정되지만 C 플래그에 대응하는 조건 플래그(26)는 여전히 제거됨을 판정한다. 그러므로, 도 11의 148 단계에서, 추적 회로(6)는 적어도 C 플래그를 나타내는 값을 포함하는 추적 데이터 요소를 생성한다. 이후 C 조건 플래그에 대응하는 제어 플래그(26)가 설정된다.
추적 스트림의 분석시, 진단 장치(12)는 메모리 위치(200C)에서의 ADDHI 명령에 대한 조건 플래그의 필요 서브세트가 C 및 Z 플래그임을 감지한다. C 플래그에 대응하는 진단 제어 플래그(28)는 제거되므로, 166 단계에서 진단 회로(16)는 추적 스트림에서 C 플래그 값을 나타내는 ADDHI 명령과 관련된 추적 데이터 요소의 위치를 확인할 것이다. 도 12의 168 단계에서, 진단 회로(16)는 추가의 추적 데이터 요소의 위치도 확인할 것인데, 이는 Z 조건 플래그에 대한 진단 제어 플래그(28)가 164 단계에서 설정되었기 때문이다. 해당 예에서, 추가의 추적 데이터 요소는 메모리 위치(2004)에 있는 MOVNE 명령에 대해 생성된 추적 데이터 요소이다. 도 12의 170 단계에서, 진단 회로(16)는 메모리 위치(2004)에 있는 MOVNE 명령에 대해 추적 데이터 요소에 포함된 추적된 조건 값과 메모리 위치(200C)에 있는 ADDHI 명령에 대해 추적 데이터 요소에 포함된 추적 조건 값 양자를 기초로 ADDHI 명령의 처리 결과를 판정한다.
유사한 방식으로, 추적 회로(6)는 추적 데이터를 생성하고 진단 회로(16)는 도 13에 예시된 후속 명령에 대해 추적 데이터를 분석한다.
전술한 실시예는 제어 플래그(26)와 진단 제어 플래그(28)가 조건 플래그(22)의 갱신시 제거되는 것으로 설명하고 있지만, 다른 이벤트도 제어 플래그(26) 또는 진단 제어 플래그(28)의 제거를 야기할 수 있다. 예를 들면, 예외 이벤트가 제어 플래그의 제거를 야기할 수 있다. 예외 이벤트에 의해 기동되는 예외 핸들러가 추적 회로(6)에 의해 추적되고 있으면, 예외 이벤트 발생시 제어 플래그(26)를 제거하는 것은 조건 플래그(22)가 예외 핸들러의 개시시 추적되는 것을 보장한다. 대안적으로, 예외 핸들러가 추적되고 있지 않으면, 예외 이벤트의 발생시 제어 플래그(26)를 제거하는 것은 조건 플래그(22)가 예외 핸들링으로부터 복귀된 이후에 추적되는 것을 보장할 수 있다.
또한, 추적 회로(6)는 제어 플래그를 주기적으로 제거함으로써 추적된 조건 값이 추적 스트림에 주기적으로 포함되어 진단 장치(12)에 대한 기준점을 제공할 수 있다. 진단 회로(16)는 기준점에서 추적 데이터의 분석을 개시할 수 있는데, 이는 기준점에 포함된 추적된 조건 값이 조건 플래그의 상태를 이전의 추적 데이터 요소로부터의 정보를 필요로 하지 않고 판정할 수 있도록 하기 때문이다. 이것은 진단 회로(16)가 관심 영역에 도달하기 위해 전체 추적 스트림을 통해 작동하기보다는 관심 추적 스트림의 영역으로 직접 점핑할 수 있으므로 유용하다.
또한, 처리 성능을 향상시키기 위해, 일부 프로세서는 해당 명령이 실제 실행되어야 하는지 여부를 알기 이전에 명령의 예상적인 실행을 수행할 수 있다. 때로, 하나 이상의 예상적으로 실행되는 명령은 실제 실행되지 않아야 한다. 오판된 예상의 감지시, 프로세서는 잘못 실행된 명령의 실행 이전에 생기는 프로세서 상태를 복구하기 위해 임의의 잘못 실행된 명령의 결과를 뒤집을 수 있다. 추적 회로(6)에서는 얼마나 많은 명령이 잘못 실행되었는지를 알지 못할 수 있다. 오판된 예상의 수정으로부터 얻어지는 조건 플래그 값이 추적 스트림으로부터 결정될 수 있는 것을 보장하기 위해, 추적 회로(6)는 오판된 예상의 감지시 제어 플래그(26)를 제거할 수 있다.
임의의 이들 이벤트의 경우, 추적 회로(6)는 추적 스트림 내에 제어 플래그(26)가 제거되었음을 나타내는 정보를 포함할 수 있다. 진단 회로(16)는 진단 제어 플래그(28)를 제거하는 것에 의해 해당 정보에 응답할 수 있다.
도 8-13은 조건 명령의 결과가 진단 장치(12)에 의해 판정될 수 있도록 조건 플래그(22)의 값을 나타내는 추적된 조건 값이 추적 스트림 내에 포함되는 실시예를 예시한다. 그러나, 이들 기술은 조건 명령의 결과가 판정될 수 있도록 다른 종류의 결과 지시 값(예, 통과/실패 결과)이 추적 스트림 내에 포함되는 실시예에도 적용될 수 있다.
본 발명의 예시적인 실시예들이 첨부 도면을 참조로 여기에 상세히 설명되었지만, 본 발명은 해당 상세한 실시예에 한정되지 않으며 첨부된 특허청구범위에 의해 한정되는 본 발명의 범위를 벗어나지 않고 당업자에 의해 다양한 변경 및 변형이 이루어질 수 있음을 이해하여야 한다.

Claims (38)

  1. 처리 장치로서:
    프로그램 명령에 응답하여 처리 동작을 수행하도록 된 처리 회로와;
    상기 처리 회로의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치와;
    상기 프로그램 명령에 응답하여 상기 처리 회로에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하도록 된 추적 회로를 포함하고;
    상기 처리 회로는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며;
    상기 추적 회로는, 적어도 하나의 선택된 명령을 처리하는 상기 처리 회로에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하고,
    상기 추적 회로는 제어 플래그를 저장하도록 구성되며, 상기 추적 회로는 상기 제어 플래그에 응답하여, 주어진 프로그램 명령에 대해 상기 추적된 조건 값을 포함하는 상기 추적 데이터 요소를 생성할지 여부를 선택하고,
    상기 제어 플래그는 제1 상태와 제2 상태를 가지며;
    상기 추적 회로는 상기 적어도 하나의 조건 플래그의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
    상기 추적 회로는 조건 명령을 처리하는 상기 처리 회로에 응답하여:
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 처리 장치.
  2. 제1항에 있어서,
    상기 추적된 조건 값은 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트의 값을 식별하는 식별자를 포함하는 처리 장치.
  3. 제1항에 있어서,
    상기 추적된 조건 값은 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트의 값을 포함하는 처리 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 처리 회로는 적어도 하나의 조건 갱신 명령에 응답하여, 관련 처리 동작을 수행하고 상기 관련 처리 동작의 처리 결과에 의존하여 상기 적어도 하나의 조건 플래그를 갱신하며;
    상기 적어도 하나의 선택된 명령은 상기 적어도 하나의 조건 갱신 명령을 포함하는 처리 장치.
  5. 제4항에 있어서,
    상기 추적 회로는 상기 적어도 하나의 조건 갱신 명령 중 하나의 명령을 처리하는 상기 처리 회로에 응답하여, 상기 적어도 하나의 조건 갱신 명령 중 상기 하나의 명령의 처리로부터 얻어지는 상기 적어도 하나의 조건 플래그의 갱신된 값을 나타내는 상기 추적된 조건 값을 갖는 상기 추적 데이터 요소를 생성하도록 구성된 처리 장치.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 적어도 하나의 선택된 명령은 상기 적어도 하나의 조건 명령 중 적어도 하나를 포함하는 처리 장치.
  7. 제6항에 있어서,
    상기 추적 회로는 상기 적어도 하나의 조건 명령 중 상기 적어도 하나의 명령을 처리하는 상기 처리 회로에 응답하여, 최소한, 상기 적어도 하나의 조건 명령 중 상기 적어도 하나의 명령의 처리시의 상기 적어도 하나의 조건 플래그의 상기 서브세트의 현재 값을 나타내는 상기 추적된 조건 값을 갖는 상기 추적 데이터 요소를 생성하도록 구성된 처리 장치.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 적어도 하나의 선택된 명령은 상기 적어도 하나의 조건 플래그의 갱신 후 처리되는 제1 조건 명령을 포함하는 처리 장치.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 추적 회로는 상기 추적된 조건 값을 포함하는 상기 추적 데이터 요소의 생성을 야기하기 위해 상기 프로그램 명령 중 어떤 명령이 상기 적어도 하나의 선택된 명령에 포함되는지를 선택하도록 구성된 처리 장치.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 조건 상태 저장 위치는 상기 처리 회로의 각각의 조건에 대응하는 복수의 조건 플래그를 저장하도록 구성된 처리 장치.
  11. 제10항에 있어서,
    상기 조건 동작은 상기 복수의 조건 플래그의 서브세트의 현재 값에 의존하며, 상기 추적 회로는 상기 복수의 조건 플래그의 상기 서브세트를 나타내는 상기 추적된 조건 값을 갖는 상기 추적 데이터 요소를 생성하도록 구성된 처리 장치.
  12. 제10항에 있어서,
    상기 추적 회로는 상기 복수의 조건 플래그 모두를 나타내는 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 구성된 처리 장치.
  13. 제10항에 있어서,
    상기 추적 회로는 상기 복수의 조건 플래그에 대응하는 복수의 제어 플래그를 저장하도록 구성되고, 상기 추적 회로는 각각의 제어 플래그에 응답하여 주어진 프로그램 명령이 상기 대응하는 조건 플래그를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하는지 여부를 선택하는 처리 장치.
  14. 제13항에 있어서,
    상기 복수의 제어 플래그 각각은 제1 상태와 제2 상태를 가지며;
    상기 추적 회로는 상기 복수의 조건 플래그 중 임의의 플래그의 갱신에 응답하여, 적어도 갱신된 조건 플래그에 대응하는 제어 플래그를 상기 제1 상태에 배치하며;
    상기 추적 회로는 조건 플래그의 필요한 서브세트에 의존하는 상기 적어도 하나의 조건 명령 중 하나를 처리하는 상기 처리 회로에 응답하여:
    (a) 상기 필요한 조건 플래그의 서브세트에 대응하는 상기 대응하는 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 대응하는 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있으면, 적어도, 해당 대응하는 제어 플래그가 상기 제1 상태에 있는 상기 필요한 서브세트의 조건 플래그를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하고 상기 대응하는 제어 플래그를 상기 제2 상태에 배치하는 처리 장치.
  15. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 적어도 하나의 조건 명령의 상기 조건 동작은 비-분기(non-branch) 동작인 처리 장치.
  16. 처리 장치로서:
    프로그램 명령에 응답하여 처리 동작을 수행하기 위한 처리 수단과;
    상기 처리 수단의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하기 위한 조건 상태 저장 수단과;
    상기 프로그램 명령에 응답하여 상기 처리 수단에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하기 위한 추적 수단을 포함하고;
    상기 처리 수단은 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며;
    상기 추적 수단은, 적어도 하나의 선택된 명령을 처리하는 상기 처리 수단에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하고,
    상기 추적 수단은 제어 플래그를 저장하도록 구성되며, 상기 추적 수단은 상기 제어 플래그에 응답하여, 조건 명령에 대해 상기 추적된 조건 값을 포함하는 상기 추적 데이터 요소를 생성할지 여부를 선택하고,
    상기 제어 플래그는 제1 상태와 제2 상태를 가지며;
    상기 추적 수단은 상기 적어도 하나의 조건 플래그의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
    상기 추적 수단은 조건 명령을 처리하는 상기 처리 수단에 응답하여:
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 처리 장치.
  17. 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 모니터링하는 추적 유닛으로서:
    상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치를 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 추적 유닛은:
    상기 프로그램 명령에 응답하여 상기 처리 장치에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하도록 된 추적 회로를 포함하고;
    상기 추적 회로는, 적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하고,
    상기 추적 회로는 제어 플래그를 저장하도록 구성되며, 상기 추적 회로는 상기 제어 플래그에 응답하여, 조건 명령에 대해 상기 추적된 조건 값을 포함하는 상기 추적 데이터 요소를 생성할지 여부를 선택하고,
    상기 제어 플래그는 제1 상태와 제2 상태를 가지며;
    상기 추적 회로는 상기 적어도 하나의 조건 플래그의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
    상기 추적 회로는 조건 명령을 처리하는 상기 처리 장치에 응답하여:
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 추적 유닛.
  18. 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 모니터링하는 추적 유닛으로서:
    상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하기 위한 조건 상태 저장 수단을 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 추적 유닛은:
    상기 프로그램 명령에 응답하여 상기 처리 장치에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하기 위한 추적 수단을 포함하고;
    상기 추적 수단은, 적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하도록 되어 있고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하고,
    상기 추적 수단은 제어 플래그를 저장하도록 구성되며, 상기 추적 수단은 상기 제어 플래그에 응답하여, 조건 명령에 대해 상기 추적된 조건 값을 포함하는 상기 추적 데이터 요소를 생성할지 여부를 선택하고,
    상기 제어 플래그는 제1 상태와 제2 상태를 가지며;
    상기 추적 수단은 상기 적어도 하나의 조건 플래그의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
    상기 추적 수단은 조건 명령을 처리하는 상기 처리 장치에 응답하여:
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 추적 유닛.
  19. 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 나타내는 추적 데이터를 분석하는 진단 장치로서:
    상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치를 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 진단 장치는:
    적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여 생성되고 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 적어도 하나의 추적 데이터 요소를 포함하는 추적 데이터를 수신하도록 된 추적 입력과;
    상기 적어도 하나의 추적 데이터 요소에 포함된 상기 추적된 조건 값에 의존하여 상기 적어도 하나의 조건 명령의 처리 결과를 판정하도록 된 진단 회로를 포함하고,
    상기 진단 회로는 제1 상태와 제2 상태를 갖는 진단 제어 플래그를 저장하도록 구성되며;
    상기 추적 입력은 상기 처리 장치에 의해 처리된 상기 프로그램 명령의 지시를 수신하며;
    상기 진단 회로는 상기 적어도 하나의 조건 플래그를 갱신하는 상기 처리 장치의 지시에 응답하여 상기 진단 제어 플래그를 상기 제1 상태에 배치하며;
    상기 진단 회로는 조건 명령을 처리하는 상기 처리 장치의 지시에 응답하여;
    (a) 상기 진단 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) (a) 단계에서 상기 진단 제어 플래그가 상기 제1 상태에 있으면, 상기 추적 데이터 내에서 상기 조건 명령에 대한 관련 추적 데이터 요소의 위치를 확인하여 상기 관련 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하며, 상기 진단 제어플래그를 상기 제2 상태에 배치하고;
    (c) (a) 단계에서 상기 진단 제어 플래그가 상기 제2 상태에 있으면, 상기 추적 데이터 내에서 이전의 조건 명령에 관련된 추가의 추적 데이터 요소의 위치를 확인하여 상기 추가의 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하는 것을 특징으로 하는 진단 장치.
  20. 제19항에 있어서,
    상기 적어도 하나의 선택된 명령은, 관련 처리 동작은 수행하고 상기 관련 처리 동작의 처리 결과에 의존하여 상기 적어도 하나의 조건 플래그를 갱신하도록, 상기 처리 장치를 제어하기 위해 적어도 하나의 조건 갱신 명령을 포함하는 진단 장치.
  21. 제19항 또는 제20항에 있어서,
    상기 적어도 하나의 선택된 명령은 상기 적어도 하나의 조건 명령 중 적어도 하나를 포함하는 진단 장치.
  22. 제19항에 있어서,
    상기 처리 장치의 상기 조건 상태 저장 위치는 상기 처리 장치의 각각의 조건에 대응하는 복수의 조건 플래그를 저장하도록 구성되며;
    상기 진단 회로는 상기 복수의 조건 플래그에 대응하는 복수의 진단 제어 플래그를 저장하도록 구성되고, 상기 복수의 진단 제어 플래그 각각은 제1 상태와 제2 상태를 가지며;
    상기 추적 입력은 상기 처리 장치에 의해 처리된 상기 프로그램 명령의 지시를 수신할 수 있으며;
    상기 진단 회로는 상기 조건 플래그 중 임의의 플래그를 갱신하는 상기 처리 장치의 지시에 응답하여 적어도 갱신 완료된 조건 플래그에 대응하는 조건 플래그를 상기 제1 상태에 배치하며;
    상기 진단 회로는 조건 플래그의 필요한 서브세트에 의존하는 조건 명령을 처리하는 상기 처리 장치의 지시에 응답하여;
    (a) 상기 필요한 서브세트의 조건 플래그에 대응하는 대응 진단 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 (a) 단계에서 상기 대응하는 진단 제어 플래그 중 임의의 플래그가 상기 제1 상태에 있으면, 상기 추적 데이터 내에서, 상기 조건 명령에 대한 관련 추적 데이터 요소로서, 최소한 해당 대응하는 진단 제어 플래그가 상기 제1 상태에 있는 조건 플래그를 나타내는 제1 추적된 조건 값을 포함하는, 관련 추적 데이터 요소의 위치를 확인하여 상기 대응하는 진단 제어 플래그를 상기 제2 상태에 배치하고;
    (c) 상기 (a) 단계에서, 상기 대응하는 진단 제어 플래그 중 임의의 플래그가 상기 제2 상태에 있으면, 상기 추적 데이터 내에서, 적어도 하나의 이전 조건 명령에 대한 적어도 하나의 추가의 추적 데이터 요소로서, 최소한 해당 대응하는 진단 제어 플래그가 상기 제2 상태에 있는 조건 플래그를 나타내는 적어도 하나의 추가의 추적된 조건 값을 포함하는, 추가의 추적 데이터 요소의 위치를 확인하고;
    (d) 상기 제1의 추적된 조건 값과 상기 적어도 하나의 추가의 추적된 조건 값 중 적어도 하나에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하는 진단 장치.
  23. 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 나타내는 추적 데이터 요소를 분석하는 진단 장치로서:
    상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하기 위한 조건 상태 저장 수단을 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 진단 장치는:
    적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여 생성되고 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 수신하기 위한 입력 수단과;
    상기 적어도 하나의 선택된 명령을 위해 상기 추적 데이터 요소에 포함된 상기 추적된 조건 값에 의존하여 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 진단 수단을 포함하고,
    상기 진단 수단은 제1 상태와 제2 상태를 갖는 진단 제어 플래그를 저장하도록 구성되며;
    상기 입력 수단은 상기 처리 장치에 의해 처리된 상기 프로그램 명령의 지시를 수신하며;
    상기 진단 수단은 상기 적어도 하나의 조건 플래그를 갱신하는 상기 처리 장치의 지시에 응답하여 상기 진단 제어 플래그를 상기 제1 상태에 배치하며;
    상기 진단 수단은 조건 명령을 처리하는 상기 처리 장치의 지시에 응답하여;
    (a) 상기 진단 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) (a) 단계에서 상기 진단 제어 플래그가 상기 제1 상태에 있으면, 상기 추적 데이터 내에서 상기 조건 명령에 대한 관련 추적 데이터 요소의 위치를 확인하여 상기 관련 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하며, 상기 진단 제어플래그를 상기 제2 상태에 배치하고;
    (c) (a) 단계에서 상기 진단 제어 플래그가 상기 제2 상태에 있으면, 상기 추적 데이터 내에서 이전의 조건 명령에 관련된 추가의 추적 데이터 요소의 위치를 확인하여 상기 추가의 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하는 것을 특징으로 하는 진단 장치.
  24. 데이터 처리 방법으로서:
    프로그램 명령에 응답하여, 처리 장치를 사용하여 처리 동작을 수행하는 단계와;
    상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하는 단계와;
    상기 처리 동작을 나타내는 추적 데이터 요소를 생성하는 단계를 포함하고;
    상기 처리 동작 수행 단계는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하는 것을 포함하며;
    상기 추적 데이터 요소 생성 단계는 적어도 하나의 선택된 명령에 응답하여, 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 생성하는 것을 포함하고, 상기 추적된 조건 값은 상기 적어도 하나의 조건 명령의 처리 결과를 판정하기 위한 정보를 제공하고,
    상기 방법은 제어 플래그의 저장을 포함하고, 상기 생성하는 단계는 상기 제어 플래그에 응답하여, 조건 명령에 대해 상기 추적된 조건 값을 포함하는 상기 추적 데이터 요소를 생성할지 여부를 선택하고,
    상기 제어 플래그는 제1 상태와 제2 상태를 가지며;
    상기 적어도 하나의 조건 플래그의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
    조건 명령을 처리하는 처리 회로에 응답하여, 상기 생성하는 단계는,
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 추적된 조건 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 방법.
  25. 프로그램 명령에 응답하여 처리 장치에 의해 수행된 처리 동작을 나타내는 추적 데이터 요소를 분석하는 방법으로서:
    상기 처리 장치는 상기 처리 장치의 조건을 나타내는 적어도 하나의 조건 플래그를 저장하도록 된 조건 상태 저장 위치를 포함하고, 상기 처리 장치는 적어도 하나의 조건 명령에 응답하여 상기 적어도 하나의 조건 플래그의 서브세트의 현재 값에 의존하여 조건 동작을 수행하며, 상기 방법은:
    적어도 하나의 선택된 명령을 처리하는 상기 처리 장치에 응답하여 생성되고 최소한 상기 적어도 하나의 조건 플래그의 상기 서브세트를 나타내는 추적된 조건 값을 포함하는 추적 데이터 요소를 수신하는 단계와;
    상기 적어도 하나의 선택된 명령을 위해 상기 추적 데이터 요소에 포함된 상기 추적된 조건 값에 의존하여 상기 적어도 하나의 조건 명령의 처리 결과를 판정하는 단계를 포함하고,
    상기 수신하는 단계는 상기 처리 장치에 의해 처리된 상기 프로그램 명령의 지시를 수신하며;
    상기 방법은, 상기 적어도 하나의 조건 플래그를 갱신하는 상기 처리 장치의 지시를 수신하는 것에 응답하여 진단 제어 플래그를 제1 상태에 배치하고;
    조건 명령을 처리하는 상기 처리 장치의 지시에 응답하여, 상기 판정하는 단계는,
    (a) 상기 진단 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) (a) 단계에서 상기 진단 제어 플래그가 상기 제1 상태에 있으면, 상기 추적 데이터 내에서 상기 조건 명령에 대한 관련 추적 데이터 요소의 위치를 확인하여 상기 관련 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하며, 상기 진단 제어 플래그를 제2 상태에 배치하고;
    (c) (a) 단계에서 상기 진단 제어 플래그가 상기 제2 상태에 있으면, 상기 추적 데이터 내에서 이전의 조건 명령에 관련된 추가의 추적 데이터 요소의 위치를 확인하여 상기 추가의 추적 데이터 요소 내에 포함된 상기 추적된 조건 값에 의존하여 상기 조건 명령의 상기 처리 결과를 판정하는 것을 특징으로 하는 방법.
  26. 제25항의 방법을 수행하도록 컴퓨터를 제어하는 컴퓨터 프로그램을 저장하는 것을 특징으로 하는 비-일시적 저장 매체.
  27. 처리 장치로서:
    프로그램 명령에 응답하여 처리 동작을 수행하도록 된 처리 회로와;
    상기 프로그램 명령에 응답하여 상기 처리 회로에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하도록 된 추적 회로를 포함하고;
    상기 처리 회로는 적어도 하나의 조건 명령에 응답하여 상기 처리 회로의 조건에 의존하여 조건 동작을 수행하며;
    상기 추적 회로는 제1 및 제2 상태를 갖는 제어 플래그를 저장하도록 되어 있으며;
    상기 추적 회로는 상기 처리 회로의 상기 조건의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하며;
    상기 추적 회로는 적어도 하나의 조건 명령 중 하나를 처리하는 상기 처리 회로에 응답하여;
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 적어도 하나의 조건 명령의 처리 결과에 대한 정보를 제공하기 위한 결과 표시 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 처리 장치.
  28. 처리 장치로서:
    프로그램 명령에 응답하여 처리 동작을 수행하기 위한 처리 수단과;
    상기 프로그램 명령에 응답하여 상기 처리 수단에 의해 수행된 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하기 위한 추적 수단을 포함하고;
    상기 처리 수단은 적어도 하나의 조건 명령에 응답하여 상기 처리 수단의 조건에 의존하여 조건 동작을 수행하며;
    상기 추적 수단은 제1 및 제2 상태를 갖는 제어 플래그를 저장하도록 되어 있고;
    상기 추적 수단은 상기 처리수단의 상기 조건의 갱신에 응답하여 상기 제어 플래그를 상기 제1 상태에 배치하고;
    상기 추적 수단은 상기 적어도 하나의 조건 명령 중 하나를 처리하는 상기 처리 수단에 응답하여;
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고;
    (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 적어도 하나의 조건 명령의 처리 결과에 대한 정보를 제공하기 위한 결과 표시 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 것을 특징으로 하는 처리 장치.
  29. 데이터 처리 방법으로서:
    프로그램 명령에 응답하여, 처리 장치를 사용하여 처리 동작을 수행하는 단계로서, 해당 처리 동작 수행 단계는 적어도 하나의 조건 명령에 응답하여 처리 회로의 조건에 의존하여 조건 동작을 수행하는 것을 포함하는 처리 동작 수행 단계와;
    제1 및 제2 상태를 갖는 제어 플래그에 의존하여 생성되고 상기 처리 동작을 나타내는 추적 데이터 요소를 생성하는 단계를 포함하고;
    상기 추적 데이터 요소 생성 단계는:
    상기 처리 회로의 상기 조건의 갱신에 응답하여, 상기 제어 플래그를 상기 제1 상태에 배치하는 단계와;
    상기 적어도 하나의 조건 명령 중 하나의 처리에 응답하여,
    (a) 상기 제어 플래그가 상기 제1 상태에 있는지 여부를 판정하고; (b) 상기 제어 플래그가 상기 제1 상태에 있으면, 상기 적어도 하나의 조건 명령의 처리 결과에 대한 정보를 제공하기 위한 결과 표시 값을 포함하는 추적 데이터 요소를 생성한 후 상기 제어 플래그를 상기 제2 상태에 배치하는 단계를 포함하는 것을 특징으로 하는 방법.
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
KR1020137020340A 2011-01-13 2011-11-29 처리 장치, 추적 유닛 및 진단 장치 KR102025556B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1100505.5 2011-01-13
GB1100505.5A GB2487355B (en) 2011-01-13 2011-01-13 Processing apparatus, trace unit and diagnostic apparatus
PCT/GB2011/052353 WO2012095619A1 (en) 2011-01-13 2011-11-29 Processing apparatus, trace unit and diagnostic apparatus

Publications (2)

Publication Number Publication Date
KR20140006861A KR20140006861A (ko) 2014-01-16
KR102025556B1 true KR102025556B1 (ko) 2019-09-26

Family

ID=43664141

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137020165A KR101994636B1 (ko) 2011-01-13 2011-11-17 데이터 처리장치의 추적
KR1020137020340A KR102025556B1 (ko) 2011-01-13 2011-11-29 처리 장치, 추적 유닛 및 진단 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020137020165A KR101994636B1 (ko) 2011-01-13 2011-11-17 데이터 처리장치의 추적

Country Status (10)

Country Link
US (4) US8874975B2 (ko)
EP (2) EP2585909B1 (ko)
JP (2) JP5865920B2 (ko)
KR (2) KR101994636B1 (ko)
CN (2) CN103299273B (ko)
GB (2) GB2487355B (ko)
IL (2) IL224506A (ko)
MY (2) MY159191A (ko)
TW (2) TWI524269B (ko)
WO (2) WO2012095618A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus
US20130145350A1 (en) * 2011-12-05 2013-06-06 Microsoft Corporation Efficient, large scale trace storage system
US8838888B2 (en) 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
US9483259B1 (en) * 2012-05-07 2016-11-01 Google Inc. System and method for providing real-time execution of source code in a collaborative online software development environment
JP6036089B2 (ja) * 2012-09-25 2016-11-30 日本電気株式会社 データ遷移トレース装置、データ遷移トレース方法、及び、データ遷移トレースプログラム
US9262163B2 (en) * 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US8990784B2 (en) 2013-06-28 2015-03-24 International Business Machines Corporation Determining control flow divergence due to variable value difference
US10372590B2 (en) * 2013-11-22 2019-08-06 International Business Corporation Determining instruction execution history in a debugger
US11068827B1 (en) * 2015-06-22 2021-07-20 Wells Fargo Bank, N.A. Master performance indicator
GB2540388B (en) * 2015-07-15 2019-01-23 Advanced Risc Mach Ltd Secure mode state data access tracking
GB2541400B (en) * 2015-08-17 2017-11-15 Advanced Risc Mach Ltd Tracing of exception handling events
GB2551574B (en) * 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
US9798593B1 (en) * 2016-07-06 2017-10-24 Workday, Inc. Synchronization of code execution
US10657021B2 (en) * 2016-09-07 2020-05-19 Arm Limited Tracing processing activity with position data to reorder items of trace data
GB2553582B (en) * 2016-09-13 2020-07-08 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
GB2560749B (en) * 2017-03-24 2020-10-14 Advanced Risc Mach Ltd Trace data representation
WO2019113603A1 (en) * 2017-12-08 2019-06-13 Zytek Communications Corporation State machine block for high-level synthesis
US10705843B2 (en) * 2017-12-21 2020-07-07 International Business Machines Corporation Method and system for detection of thread stall
JP7081922B2 (ja) * 2017-12-28 2022-06-07 株式会社バンダイナムコエンターテインメント プログラム、ゲーム装置及びゲームを実行するための方法
CN108650123B (zh) * 2018-05-08 2022-09-06 平安普惠企业管理有限公司 故障信息记录方法、装置、设备和存储介质
US10797983B1 (en) 2018-06-05 2020-10-06 Juniper Networks, Inc Systems and methods for debugging network stacks based on evidence collected from selective tracing
US11573883B1 (en) * 2018-12-13 2023-02-07 Cadence Design Systems, Inc. Systems and methods for enhanced compression of trace data in an emulation system
EP3792767B1 (en) * 2019-09-13 2023-07-12 Accemic Technologies GmbH Event processing
EP3907615B1 (en) * 2020-05-06 2022-11-02 Mitsubishi Electric R&D Centre Europe B.V. Method and system for testing the operation of a target computer system by using timed requirements
CN113485748B (zh) * 2021-05-31 2022-08-12 上海卫星工程研究所 卫星条件指令系统及其执行方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050716A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウエアデバッガとソフトウエア開発支援システム
JP2003150403A (ja) * 2001-11-06 2003-05-23 Arc Internatl (Uk) Ltd データプロセッサの観測方法及び装置

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1493176A1 (de) 1965-10-20 1969-06-26 Schering Ag Verfahren zur Herstellung von delta?-Pregnen-11beta- und 11alpha,17alpha,21-triol-3,20-dionen
US4503495A (en) * 1982-01-15 1985-03-05 Honeywell Information Systems Inc. Data processing system common bus utilization detection logic
JPS623351A (ja) * 1985-06-28 1987-01-09 Nec Corp マイクロプロセツサ
JPH0795271B2 (ja) 1989-06-20 1995-10-11 富士通株式会社 分岐命令実行装置
JP2915944B2 (ja) * 1989-12-29 1999-07-05 株式会社日立製作所 カバレージ測定方法及びマイクロコンピュータ
US6094729A (en) * 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US5978902A (en) 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port
US6553564B1 (en) 1997-12-12 2003-04-22 International Business Machines Corporation Process and system for merging trace data for primarily interpreted methods
US6247146B1 (en) * 1998-08-17 2001-06-12 Advanced Micro Devices, Inc. Method for verifying branch trace history buffer information
US6351844B1 (en) 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
US7024661B2 (en) 2000-01-07 2006-04-04 Hewlett-Packard Development Company, L.P. System and method for verifying computer program correctness and providing recoverable execution trace information
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
US8312435B2 (en) 2000-12-26 2012-11-13 Identify Software Ltd. (IL) System and method for conditional tracing of computer programs
US7185234B1 (en) * 2001-04-30 2007-02-27 Mips Technologies, Inc. Trace control from hardware and software
JP2002342114A (ja) 2001-05-21 2002-11-29 Fujitsu Ltd トレースデータ採取可能なプロセッサ
JP2003085000A (ja) 2001-09-10 2003-03-20 Mitsubishi Electric Corp トレース情報生成装置およびその方法
US7203825B2 (en) 2001-10-03 2007-04-10 Intel Corporation Sharing information to reduce redundancy in hybrid branch prediction
US20030135719A1 (en) * 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for tracing instruction disposition information
US7197671B2 (en) 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
GB2389931B (en) * 2002-06-07 2005-12-14 Advanced Risc Mach Ltd Generation of trace elements within a data processing apparatus
US20040064685A1 (en) * 2002-09-27 2004-04-01 Hung Nguyen System and method for real-time tracing and profiling of a superscalar processor implementing conditional execution
US7062684B2 (en) 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US20040153635A1 (en) 2002-12-30 2004-08-05 Kaushik Shivnandan D. Privileged-based qualification of branch trace store data
US7100024B2 (en) 2003-02-04 2006-08-29 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early status flags
US20060129999A1 (en) 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
US20070162895A1 (en) 2006-01-10 2007-07-12 International Business Machines Corporation Mechanism and method for two level adaptive trace prediction
US7562258B2 (en) * 2006-02-09 2009-07-14 Arm Limited Generation of trace elements within a data processing apparatus
US7574586B2 (en) * 2006-05-16 2009-08-11 Texas Instruments Incorporated Efficient transfer of branch information
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
US7890299B2 (en) 2007-05-21 2011-02-15 Qualcomm, Incorporated Providing event-controlled continuous logging for a mobile operating environment
US8122437B2 (en) * 2008-03-31 2012-02-21 Freescale Semiconductor, Inc. Method and apparatus to trace and correlate data trace and instruction trace for out-of-order processors
GB2459652B (en) * 2008-04-28 2010-09-22 Imagination Tech Ltd Controlling instruction scheduling based on the space in a trace buffer
JP5167984B2 (ja) 2008-06-26 2013-03-21 富士通株式会社 命令トレース生成プログラム、命令トレース生成装置および命令トレース生成方法
US8176366B2 (en) * 2009-04-03 2012-05-08 Arm Limited Trace synchronization
EP2444400B1 (en) 2009-06-15 2018-03-28 Shionogi&Co., Ltd. Substituted polycyclic carbamoylpyridone derivative
JP2011028308A (ja) * 2009-07-21 2011-02-10 Renesas Electronics Corp 半導体装置及びソフトウェア開発支援装置
GB2487355B (en) 2011-01-13 2020-03-25 Advanced Risc Mach Ltd Processing apparatus, trace unit and diagnostic apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050716A (ja) * 2001-08-06 2003-02-21 Matsushita Electric Ind Co Ltd ソフトウエアデバッガとソフトウエア開発支援システム
JP2003150403A (ja) * 2001-11-06 2003-05-23 Arc Internatl (Uk) Ltd データプロセッサの観測方法及び装置

Also Published As

Publication number Publication date
TW201232393A (en) 2012-08-01
EP2643751B1 (en) 2014-12-24
WO2012095618A1 (en) 2012-07-19
GB201101945D0 (en) 2011-03-23
KR20140014126A (ko) 2014-02-05
EP2643751A1 (en) 2013-10-02
IL226755A (en) 2017-08-31
GB2487355A (en) 2012-07-25
WO2012095619A1 (en) 2012-07-19
US20130339686A1 (en) 2013-12-19
EP2585909B1 (en) 2014-09-10
CN103299273A (zh) 2013-09-11
US8533685B2 (en) 2013-09-10
CN103299273B (zh) 2016-11-23
MY159191A (en) 2016-12-30
CN103314356A (zh) 2013-09-18
JP2014506371A (ja) 2014-03-13
JP2014507710A (ja) 2014-03-27
JP5865920B2 (ja) 2016-02-17
KR101994636B1 (ko) 2019-07-02
CN103314356B (zh) 2016-04-06
TWI524270B (zh) 2016-03-01
US10379989B2 (en) 2019-08-13
MY162170A (en) 2017-05-31
US9378113B2 (en) 2016-06-28
GB201100505D0 (en) 2011-02-23
KR20140006861A (ko) 2014-01-16
US20120185676A1 (en) 2012-07-19
JP5914521B2 (ja) 2016-05-11
GB2487251A (en) 2012-07-18
US20140101491A1 (en) 2014-04-10
TWI524269B (zh) 2016-03-01
IL224506A (en) 2015-11-30
US8874975B2 (en) 2014-10-28
GB2487355B (en) 2020-03-25
EP2585909A1 (en) 2013-05-01
TW201237746A (en) 2012-09-16
US20120185734A1 (en) 2012-07-19

Similar Documents

Publication Publication Date Title
KR102025556B1 (ko) 처리 장치, 추적 유닛 및 진단 장치
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
US7698690B2 (en) Identifying code that wastes time performing redundant computation
US8584095B2 (en) Test support system, method and computer program product, which optimize test scenarios to minimize total test time
JP2015522196A5 (ko)
US9348681B2 (en) Apparatus and method for detecting fault of processor
US20130185602A1 (en) Heap dump occurrence detection
US20140019737A1 (en) Branch Prediction For Indirect Jumps
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
US8806448B2 (en) Dynamic instrumentation method and apparatus for tracing and analyzing a program
US9547484B1 (en) Automated compiler operation verification
CN107045606A (zh) 用于监测程序代码的执行的方法和设备
JP7049275B2 (ja) 診断データキャプチャ
US10318452B2 (en) Processor and controlling method thereof to process an interrupt
EP3743818B1 (en) Commit window move element
US20200293785A1 (en) Information processing apparatus, information processing method, and medium
CN118152278A (zh) 一种内存泄漏定位方法和装置
CN105765521B (zh) 用于Java编程中的循环中止的系统和方法
US9286184B1 (en) Probabilistic correlation of system events with program instructions
JP2010211391A (ja) Cpuの動作監視方法および装置
JP2002055846A (ja) 障害検出システムおよび障害検出方法
MODEL Testing the Reconfiguration of Adaptive Systems
KR20150130626A (ko) 데이터 경쟁 상태 검출 장치 및 방법
JP2000148537A (ja) 被検査プログラムのデバグ方法とそのデバグ方式
JP2012088793A (ja) デバッガ、デバッガ制御方法及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right