KR20200128702A - 분기 명령의 추적 - Google Patents

분기 명령의 추적 Download PDF

Info

Publication number
KR20200128702A
KR20200128702A KR1020207027904A KR20207027904A KR20200128702A KR 20200128702 A KR20200128702 A KR 20200128702A KR 1020207027904 A KR1020207027904 A KR 1020207027904A KR 20207027904 A KR20207027904 A KR 20207027904A KR 20200128702 A KR20200128702 A KR 20200128702A
Authority
KR
South Korea
Prior art keywords
taken
trace
instructions
branch
data processing
Prior art date
Application number
KR1020207027904A
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 에이알엠 리미티드
Publication of KR20200128702A publication Critical patent/KR20200128702A/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/348Circuit details, i.e. tracer hardware
    • 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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

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

Abstract

장치는, 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 데이터 처리 회로소자를 구비한다. 추적 생성 회로소자는, 데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성한다. 추적 생성 회로소자는, 명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후의 테이큰 분기 명령에 응답하여: 상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하고; 상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는 회로소자다. 따라서, 낫 테이큰 분기 명령들을 추적하는 것과 테이큰 분기 명령과 관련된 소스 어드레스를 추적하는 것 사이의 혼합형 해결방법이 제공된다.

Description

분기 명령의 추적
본 개시내용은 데이터 처리에 관한 것이다. 보다 구체적으로, 본 개시내용은 분기 명령의 추적에 관한 것이다.
데이터 처리 시스템에는, 그 시스템의 데이터 프로세서에서 실시한 연산들을 추적하는 자격을 구비하고 있어도 된다. 이것은, 전형적으로, 데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림의 생성을 포함한다. 이 추적 스트림은, 데이터 처리 시스템내(예컨대, 시스템 온 칩내)에서 생성되고, 그 시스템으로부터 이출될 필요가 있어, 데이터 처리 시스템의 연산들이 감시될 수 있다. 그렇지만, 이러한 목적을 위해 (예컨대, 전용 추적 출력 핀을 거쳐) 반전될 수 있는 대역폭이 통상 매우 제약되어 있고, 그러므로 추적 스트림에 부가하기 위해 추적 항목들의 엄격한 선택과 그 선택된 추적 항목들의 효율적인 표현이 필요하다. 데이터 프로세서에서 실시한 많은 연산들은 명시적으로 추적될 필요가 없는데, 그 이유는 데이터 프로세서가 종종 명령들의 시퀀스를 실행하는 경우 해당 시퀀스에서 제1 명령을 실행할 때, 순차로 추종하는 명령들도 실행되었다는 것을 추론할 수 있기 때문이다. 그렇지만, 분기 명령들은, 보다 명시적 추적이 필요한데, 그 이유는, 분기를 취하는지 아닌지의 여부는 전형적으로 실행시간 조건에 좌우되므로, 그 프로세서가 행한 것을 재구성할 수 있도록, 분기를 취하였는지 아닌지의 여부와, 따라서 그 분기 명령 후 어떤 명령들이 실행되었는지에 관한 지식을 요구하기 때문이다.
적어도 하나의 일 실시예에서의 장치는:
분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 데이터 처리 회로소자; 및
데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 추적 생성 회로소자를 구비하고,
상기 추적 생성 회로소자는, 명령들의 시퀀스에서 하나 이상의 낫 테이큰(not-taken) 분기 명령들 후의 테이큰 분기 명령에 응답하여:
상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하고;
상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는, 회로소자다.
적어도 하나의 일 실시예에서의 장치의 연산방법은:
분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 단계; 및
데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 단계를 포함하고,
명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후 테이큰 분기 명령이 있을 때, 데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 단계는:
상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하는 것; 및
상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 상기 장치의 현재의 상태 조건 포함하는 것을 포함한다.
적어도 하나의 일 실시예에서의 장치는:
분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 수단; 및
데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 수단을 구비하고,
명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후의 테이큰 분기 명령이 있을 때, 상기 생성하는 수단은:
상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하는 수단; 및
상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는 수단을,
활성화시킨다.
본 기술들은, 아래의 첨부도면들에 도시된 것과 같은 실시예들을 참조하여 예시로만 한층 더 설명하겠다:
도 1은 일 실시예에서의 장치를 개략적으로 도시한 것이고,
도 2는 일 실시예에서의 시스템 온 칩 장치를 개략적으로 도시한 것이고,
도 3은 일 실시예에서의 장치를 개략적으로 도시한 것이고,
도 4a는 일 실시예에서의 장치의 일부의 부품들을 개략적으로 도시한 것이고,
도 4b는 일 실시예에서의 장치의 일부의 부품들을 개략적으로 도시한 것이고,
도 5a, 5b, 5c는 일 실시예에서의 분기 명령들을 포함하는 명령들 시퀀스들과 대응한 결과적인 추적 스트림들의 예를 도시한 것이고,
도 6a는 일 실시예에서 취해진 단계들의 시퀀스를 도시하는 흐름도이고, 도 6b는 도 6a의 변형 예를 도시한 것이고,
도 7 및 도 8은 일 실시예에서의 예외들을 핸들링하는데 취해지는 단계들의 시퀀스를 각각 도시하는 흐름도다.
적어도 일부의 실시예에서 제공하는 장치는:
분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 데이터 처리 회로소자; 및
데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 추적 생성 회로소자를 구비하고,
상기 추적 생성 회로소자는, 명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후의 테이큰 분기 명령에 응답하여:
상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하고;
상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는, 회로소자다.
분기 명령들의 추적에 대한 일 해결방법은, 분기마다 지시자(즉, 추적 항목)을 출력하는 것일 것이다. 예컨대, 이러한 지시자는, 분기가 테이큰 또는 낫 테이큰이었던 것을 가리키도록 인코딩될 수 있다. 테이큰/낫 테이큰 지시자들의 임의의 시퀀스들을 인코딩할 수 있는 효율성은, 이에 관하여 마찬가지로 효율적인 추적 스트림을 고려한다. 그렇지만, 이러한 해결방법은, 모든 분기들, 즉 테이큰인 분기들과 낫 테이큰인 분기들 양쪽의 지식을 요구한다. 더욱이, 동시대의 프로세서 아키텍처에 있어서, 상기와 같은 "낫 테이큰" 실행은 최적화중이고, 추적 목적을 위해 그것을 보존하는 것만은 보다 많은 비용이 들고 있는 중이다. 분기 명령들의 추적에 대한 또 하나의 해결방법은, 단지 테이큰 분기와 연결지어 지시자(즉, 추적 항목)를 추적할 뿐이지만, 프로그램 흐름이 재구성되기 위한 순서로 이것은 특정한 분기들이 테이큰인지에 대한 지식을 요구한다. 테이큰 분기의 소스 어드레스들은 이 지식을 제공하도록 출력될 수 있고, 아직 이러한 소스 어드레스들을 출력하는 것은 테이큰/낫 테이큰 지시자들의 상술한 인코딩된 임의의 시퀀스들보다 (인코딩 효율면에서) 현저하게 덜 효율적이다.
본 문맥에서의 본 기술들에서는, 하나 이상의 낫 테이큰 분기 명령들 후 테이큰 분기 명령에 어떻게 응답하는지를 결정하기 위해 상기 장치의 현재의 상태 조건을 상기 추적 생성 회로소자가 감시하는 혼합형 해결방법을 제안한다. 현재의 상태 조건이 충족될 때, 추적 생성 회로소자는, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후 테이큰 추적 항목을 포함한다. 반대로, 현재의 상태 조건이 충족되지 않을 때, 추적 생성 회로소자는, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함한다. 달리 말하면, 추적 생성 회로소자는, 추적 분기에 대한 2개의 상술한 해결방법간에, 즉 적어도 일부의 낫 테이큰 추적 항목들을 생성하는 일부의 상황들하에서, 또한 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는 명시적 테이큰 추적 항목을 생성하는 그 밖의 상황들하에서, 전환할 수 있다. 게다가, 상기 장치에는, 추적 생성 회로소자가 이들 2개의 해결방법간에 전환할 때, 현재의 상태 조건의 정의에 따라 제어하는 설정 가능성(configurability)이 구비되어 있다.
현재의 상태 조건은, 다양한 형태를 취할 수도 있고, 임의의 관련 기준 또는 기준들에 따라 정의될 수 있다. 그렇지만, 실시예들에 있어서, 현재의 상태 조건은, 하나 이상의 낫 테이큰 분기 명령들의 중복도(multiplicity)를 포함한다. 달리 말하면, 현재의 상태 조건은, 명령들의 시퀀스에서 얼마나 낫 테이큰 분기 명령들 후 테이큰 분기 명령이 있는지에 좌우될 수 있다. 간략하게, 시퀀스에서 접하는 낫 테이큰 분기 명령들이 많을수록, 명시적으로 추적중일 때 그 낫 테이큰 분기 명령들을 표현하는데 요구되는 추적 항목이나 항목들의 사이즈가 커진다. 게다가, 비록 테이큰 분기 명령을 위한 소스 어드레스를 추적하는 것이 해당 소스 어드레스를 표현하기 위해서 상대적으로 큰 추적 항목을 요구하지만, 본 기술들에 의해 안 것은, 이러한 부담이 상대적이고 대안으로서 명시적으로 추적되는 낫 테이큰 분기 명령들이 많을수록, 이러한 테이큰 분기 명령 소스 어드레스의 추적이 보다 덜 부담스러워진다는 것이다.
이에 따라, 일부의 실시예들에서, 상기 장치의 현재의 상태 조건은, 역치미만인 중복도다. 따라서, 역치를 설정함으로써 상기 2개의 해결방법간에 천이가 제어될 수 있어, 낫 테이큰 분기 명령들의 중복도(수)가 역치이하일 때, 현재의 상태 조건은 충족되고 낫 테이큰 분기 명령은 추적된다. 반대로, 낫 테이큰 분기 명령들의 중복도(수)가 역치 이상일 때, 현재의 상태 조건은 충족되지 않고 대신에 테이큰 분기 명령과 관련된 소스 어드레스는 추적 스트림에 포함된다. 그 역치의 설정은, 구현 의존적이고, 상기 장치의 특별한 요구사항들과 연산중인 문맥에 좌우된다. 실제로, 이러한 역치를 자유롭게 설정하는 능력은 본 기술들의 특징이다.
낫 테이큰 분기 명령들의 수를 감시하는 것은 임의의 기술적으로 실행 가능한 메카니즘에 의해 구현되어도 되지만, 실시예들에 있어서 상기 장치는, 낫 테이큰 분기 명령에 응답하여 증분하는 낫 테이큰 카운터를 더 구비한다. 그 후, 현재의 상태 조건이 충족되는지, 즉 상기 값이 역치 이하 또는 이상인지를 판정하기 위해 그 카운터가 현재 가리킨 값을 참조하여도 된다.
낫 테이큰 카운터는 다양한 형태를 취할 수도 있지만, 실시예들에서의 낫 테이큰 카운터는 역치에서 포화시키도록 배치된 포화 카운터다. 이 카운터를 사용하여 현재의 상태 조건을 결정하는 경우와, 상기 중복도가 역치미만일 때 상기 장치의 현재의 상태 조건을 충족하는 것으로서 판정할 때에, 그 중복도가 그 역치에 도달하면, 현재의 상태 조건은 그 카운터의 추가의 증분에 의해 영향을 받지 않을 것이므로, 포화 카운터는 이를 반영한다.
또한, 낫 테이큰 카운터의 용량은 구현 의존적이고, 일부의 실시예들에서는 낫 테이큰 카운터는 1비트 기억소자를 구비한다. 그 밖의 실시예들에서, 낫 테이큰 카운터는 다수 비트 기억소자를 구비한다.
일부의 실시예들에서, 추적하는 추적 생성 회로소자는, 명령들의 시퀀스에서 테이큰 분기 명령에 응답하여, 상기 장치의 현재의 상태 조건이 충족될 때 낫 테이큰 카운터가 가리킬 만큼 많은 추적 스트림에서의 낫 테이큰 추적 항목들을 포함하는 회로소자다.
추적하는 추적 생성 회로소자는, 데이터 처리 회로소자에서 예외의 발생에 응답하여, 예외가 일어난 명령들의 시퀀스에서의 포인트를 나타내는 예외 추적 항목을 추적 스트림에 포함하고 낫 테이큰 카운터를 리셋트시키는 회로소자일 수도 있다.
추적하는 추적 생성 회로소자는, 데이터 처리 회로소자에서 예외의 발생에 응답하여, 낫 테이큰 카운터가 가리킬 만큼 많은 추적 스트림에서의 낫 테이큰 추적 항목들을 포함하는 회로소자일 수도 있다.
또한, 역치는 시스템 요구사항에 따라 다양하게 구성될 수도 있다. 일부의 실시예들에서, 역치는 상기 장치를 위한 소정의 정적(static)값이다. 그 밖의 실시예들에서, 역치는 가변(variable)값이다.
역치를 변동시키는 능력은, 다양한 상황들에서의 응용성을 발견할 수도 있다. 예컨대, 일부의 실시예들에서, 추적 생성 회로소자는, 상기 장치를 위한 현재의 자원 사용 표시에 응답하여, 동적으로 역치를 설정하는 회로소자다. 이러한 현재의 자원 사용 표시는 다양한 형태를 취할 수도 있고, 특히 역치가 보다 높은 값으로 설정될 때 상기 장치가 견뎌야 하는 추가의 부담과 교환될 필요가 있을 수도 있는 상기 장치의 자원의 사용을 반영하여도 된다. 예컨대, 실시예들에서, 상기 장치를 위한 현재의 자원 사용 표시는, 상기 장치내의 기억소자의 현재의 점유율을 가리킨다. 상기 장치내의 기억능력이 상대적으로 부족한 자원일 수도 있는 경우, 기억소자의 사용이 현재 많으므로 역치를 감소시키는(따라서, 접해져 있는 낫 테이큰 분기 명령들의 수를 기록하는데 요구된 용량을 감소시키는) 것이 이로울 수도 있다.
생성되는 테이큰 추적 항목은, 다양한 형태를 취할 수도 있다. 일부의 실시예들에서, 테이큰 추적 항목은, 테이큰 분기 명령의 분기가 취해졌다는 표시다. 예를 들면, 이것은, 간단한 "테이큰" 표시이어도 되고, "E 원자"("실행된" 원자)라고 부르는 경우도 있다. 일부의 실시예들에서, 테이큰 추적 항목은, 분기 명령과 관련된 소스 어드레스다. 달리 말하면, 소스 어드레스 자체는, 분기가 취해졌다는 표시로서 사용되어도 된다. 일부의 실시예들에서, 테이큰 추적 항목은, 분기 명령과 관련된 소스 어드레스 후에 테이큰 분기 명령의 분기가 취해졌다는 표시다. 달리 말하면, 소스 어드레스와 예컨대, 상술한 단순한 "테이큰" 표시("E 원자")와의 양쪽이 사용되어도 된다.
분기 명령들은, 직접적 또는 간접적이어도 된다. 일부의 실시예들에서, 테이큰 추적 항목은, 분기가 간접 분기일 때 그 분기용 타겟 어드레스의 표시를 더 포함한다.
(최근의 경험에 근거하여) 드물게 실행되는 실행 시퀀스로부터 명령들을 제거함으로써 성능을 향상시키기 위해 단계들을 동시에 취해도 된다. 예컨대, 이렇게 적어도 일부의 "낫 테이큰" 분기들이 다루어져도 된다. 이 문맥에서, 본 기술들이 제안한 것은, 상기와 같은 "최적화" 단계들은 추적 스트림에서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는, 즉 상기 장치의 현재의 상태 조건이 충족되지 않는다고 판정함으로써 그 "최적화" 단계들에 응답하는, 트리거이어도 된다는 것이다. 따라서, 일부의 실시예들에서, 추적 생성 회로소자는, 성능 향상 과정에서 명령들의 시퀀스로부터 적어도 하나의 분기 명령을 데이터 처리 회로소자가 제거한 표시에 응답하여, 상기 장치의 현재의 상태 조건이 충족되지 않는다고 판정하는 회로소자다.
적어도 일부의 실시예들에서 제공하는 장치의 연산방법은:
분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 단계; 및
데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 단계를 포함하고,
명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후 테이큰 분기 명령이 있을 때, 데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 단계는:
상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하는 것; 및
상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 상기 장치의 현재의 상태 조건 포함하는 것을 포함한다.
적어도 일부의 실시예들에서 제공하는 장치는:
분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 수단; 및
데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 수단을 구비하고,
명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후의 테이큰 분기 명령이 있을 때, 상기 생성하는 수단은:
상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하는 수단; 및
상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는 수단을,
활성화시킨다.
이하, 일부의 특별한 실시예들에 대해서 도면들을 참조하여 설명하겠다.
도 1은 일 실시예에서의 장치(10)를 개략적으로 도시한 것이다. 이 장치는, 데이터 처리 회로소자(12)와 추적 생성 회로소자(14)를 구비한다. 데이터 처리 회로소자(12)는 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행한다. 추적 생성 회로소자(14)는, 데이터 처리 회로소자(12)가 실시하는 데이터 처리 연산들을 나타내는 데이터 처리 정보를 수신하고, 그것에 근거하여 추적 스트림을 형성하는 추적 항목들(요소들)을 생성하여, 이로부터 상기 장치의 활동이 재구성될 수 있다. 특히, 명령들의 시퀀스에 응답하여 데이터 처리 회로소자(12)에서 수행한 데이터 처리 연산들은 재구성될 수 있다. 후속하는 도면들에 대해 보다 상세히 후술하듯이, 추적 생성 회로소자(14)가 추적 스트림을 생성하는 방식은 상기 장치(12)의 현재의 상태 조건(16)에 의존적이다. 이러한 현재의 상태 조건(16)은, 후속하는 도면을 참조하여 구체적으로 설명한 것처럼, 다수의 형태를 취할 수도 있다. 게다가, 추적 생성 회로소자가 명령들의 시퀀스에서 분기 명령들을 나타내는 추적 항목들을 생성하는 방식(그리고, 데이터 처리 회로소자(12)가 어떻게 그 분기 명령들에 응답하였는지)은, 현재의 상태 조건에 의존적이다. 현재의 상태 조건이 충족될 때, 추적 생성 회로소자(14)는, 추적 스트림에 있어서(낫 테이큰 분기 및 테이큰 분기 각각을 나타내는) 낫 테이큰 추적 항목 및 테이큰 추적 항목을 포함하여도 되는 한편, 현재의 상태 조건이 충족되지 않을 때, 추적 생성 회로소자(14)는, 해당 분기가 취해질 때 분기 명령의 소스 어드레스를 포함하여도 된다. 그 분기가 간접 분기이었으면, 테이큰 추적 항목은 그 분기의 타겟 어드레스의 표시를 더 포함한다.
도 2는 일 실시예에서의 장치(20)를 개략적으로 도시한 것이다. 이 장치(20)는, 시스템 온 칩(SoC)으로서 구체화되고, 데이터 처리 회로소자(22)와 추적 생성 회로소자(24)를 구비한다. 데이터 처리 회로소자(22)는, 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행한다. 추적 생성 회로소자(24)는, 데이터 처리 회로소자(22)가 실시하는 데이터 처리 연산들을 나타내는 데이터 처리 정보를 수신하고, 그것에 근거하여, 추적 스트림을 형성하는 추적 항목들(요소들)을 생성하여, 이로부터 상기 장치의 활동이 재구성될 수 있다. 도 1의 장치 10에 대해 설명된 것처럼, 추적 생성 회로소자(24)가 추적 스트림을 생성하는 방식은 상기 장치 20의 현재의 상태 조건에 의존적이다. 도 2에서는, 해당 현재의 상태 조건의 중요한 부품을 낫 테이큰 카운터(26)로 나타낸다. 이 낫 테이큰 카운터(26)는, 데이터 처리 회로소자(22)가 명령들의 시퀀스에서의 분기 명령에 접할 때 증분되고, 그 분기는 취해지지 않는다. 따라서, 추적 생성 회로소자(24)가 명령들의 시퀀스에서 분기 명령들을 나타내는 추적 항목들을 생성하는 방식(그리고, 데이터 처리 회로소자(22)가 어떻게 그 분기 명령들에 응답하였는지)은, 현재의 상태 조건에 의존적이다. 이렇게 하여, 낫 테이큰 카운터(26)의 특정한 값들의 경우, 현재의 상태 조건이 충족된다고 판정되고 추적 생성 회로소자(24)가 추적 스트림에서 (낫 테이큰 분기와 테이큰 분기 각각을 나타내는) 낫 테이큰 추적 항목과 테이큰 추적 항목을 포함하여도 되는 한편, 낫 테이큰 카운터(26)의 나머지 값들의 경우, 현재의 상태 조건은 충족되지 않는다고 판정되고 추적 생성 회로소자(24)는 해당 분기가 취해질 때 분기 명령의 소스 어드레스를 포함하여도 된다.
도 3은, 일 실시예에서의 장치(30)를 개략적으로 도시한 것이다. 이 장치는, 데이터 처리 회로소자(32)와 추적 생성 회로소자(34)를 구비한다. 데이터 처리 회로소자(32)는, 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행한다. 추적 생성 회로소자(34)는, 데이터 처리 회로소자(32)가 실시하는 데이터 처리 연산들을 나타내는 데이터 처리 정보를 수신하고, 그것에 근거하여, 추적 스트림을 형성하는 추적 항목들(요소들)을 생성하여, 이로부터 상기 장치의 활동이 재구성될 수 있다. 또한, 상기 장치(30)는, 낫 테이큰 카운터(36), 역치 스토리지(37) 및 비교 회로소자(38)를 구비한다. 도 2의 낫 테이큰 카운터(26)에 관해서, 이 낫 테이큰 카운터(36)는, 데이터 처리 회로소자(32)가 명령들의 시퀀스에서의 분기 명령에 접할 때 증분되고, 그 분기는 취해지지 않는다. 역치 스토리지(27)와 비교 회로소자(38)의 제공에 의해, 현재의 상태 조건이 충족되는지 아닌지를 판정할 수 있다. 구체적으로, 현재의 상태 조건은 낫 테이큰 카운터(36)의 값이 역치(37) 미만일 때 충족된다고 판정되고, 현재의 상태 조건은, 낫 테이큰 카운터(36)의 값이 역치(37) 이상일 때 충족되지 않는다고 판정된다. 이에 근거하여, 추적 생성 회로소자(34)는, 추적 스트림에서 (낫 테이큰 분기와 테이큰 분기 각각을 나타내는) 낫 테이큰 추적 항목과 테이큰 추적 항목을 포함하여도 되거나, 해당 분기가 취해질 때 분기 명령의 소스 어드레스를 포함하여도 된다.
도 1 내지 도 3의 실시예들은, 어떠한 방법으로든 상호 배타적인 명백한 실시예들로서 보여지는 것이 아니라, 오히려 본 기술들의 상이한 측면들과 그들의 실시예들에 대한 상이한 가능성을 강조하기 위해서 도면에 제시된 것뿐이라는 것을 주목해야 한다. 예를 들면, 현재의 상태 조건(16)은 데이터 처리 회로소자(12)의 일부를 형성하는 것으로서 도 1에 도시되어 있고, 추적 생성 회로소자(24)의 일부를 형성하는 것으로서 도 2에 도시된 낫 테이큰 카운터(26)와, 도 3에서의 낫 테이큰 카운터(36), 역치 스토리지(37) 및 비교 회로소자(38)는, 데이터 처리 회로소자(32)와 추적 생성 회로소자(34) 외측에 도시되어 있다. 그러므로, 이것이 강조하는 것은, 본 기술들을 구체화할 수 있는 방식들이 다양하고, 특히 현재의 상태 조건, 낫 테이큰 카운터, 역치 또는 비교 회로소자 등의 항목들이 데이터 처리 회로소자의 또는 추적 생성 회로소자의, 한쪽 또는 다른쪽(또는 실제로는 양쪽)의 일부를 형성할 필요가 없다는 것이다. 또한, 이러한 의견은, 서로에 대해서와 도 1 내지 도 3에 대해서 후속하는 도 4a 및 도 4b에 자유롭게 적용한다. 요소들은, 적절하게 서로 자유롭게 조합되어도 된다.
도 4a는 포화 낫 테이큰 카운터(40), 역치 스토리지(42) 및 비교 회로소자(44)를 개략적으로 도시한 것이다. 도 2의 낫 테이큰 카운터(26)와 도 3의 낫 테이큰 카운터(36)에 관해서, 이 낫 테이큰 카운터(40)는, 감시된 데이터 처리 회로소자(도 4에는 미도시됨)가 명령들의 시퀀스에서의 분기 명령에 접할 때 증분되고, 그 분기는 취해지지 않는다. 낫 테이큰 카운터(40)는, 추가의 낫 테이큰 분기들에 접하는 경우에도, (즉, 보다 한층 더 증분하지 않는) 포화값으로 포화시키도록 배치된 포화 카운터다. 이러한 포화값은, 자체가 설정 가능하여도(입력 "역치 설정" 참조) 되는 역치(42)에 의해 정의된다. 비교 회로소자(44)는, 현재의 상태 조건이 충족되는지 아닌지를 판정하기 위해 낫 테이큰 카운터(40)의 현재 값과 역치(42)를 비교한다. 구체적으로, 현재의 상태 조건은 포화 낫 테이큰 카운터(40)의 값이 역치(42)미만일(즉, 카운터(40)가 아직 포화되어 있지 않을) 때 충족된다고 판정되고, 현재의 상태 조건은 낫 테이큰 카운터(40)의 값이 역치(42) 이상일(즉, 카운터(40)가 포화되어 있을) 때 충족되지 않는다고 판정된다. 현재의 상태 조건은, "추적 모드"를, 즉 추적 생성 회로소자(도 4a에 미도시됨)가 추적 스트림에서 (낫 테이큰 분기와 테이큰 분기 각각을 나타내는) 낫 테이큰 추적 항목과 테이큰 추적 항목을 포함하거나, 분기가 취해질 때 분기 명령의 소스 어드레스를 포함하는지를, 판정한다.
도 4b는 기억소자(52)를 구비하도록 도시되는 데이터 처리 회로소자(50)의 추가의 예를 도시한 것이다. 이 기억소자는, 이를테면 레지스터에 의해 또는 캐시 데이터 스토어에 의해 여러가지로 구체화되어도 되는데, 그 이유는 그것의 특별한 형태가 여기서는 중요하지 않기 때문이다. 그렇지만, 기억소자가 낫 테이큰(NT) 카운터(54)를 유지하기 위해 적어도 부분적으로 사용된다는 것을 주목한다. 상기 예들에서와 같이, 낫 테이큰(NT) 카운터(54)는 데이터 처리 회로소자(50)가 명령들의 시퀀스에서 분기 명령에 접할 때 증분되고 그 분기는 취해지지 않는다. 또한, 상기 장치는, 역치 스토리지(58)와 비교 회로소자(60)를 구비한다. 상술한 것처럼, 비교 회로소자(60)에 의한 NT 카운터(54) 값과 역치(58)와의 비교는 "추적 모드"를 판정한다. 그렇지만, 제어 회로소자(56)도 존재하는 것을 주목한다. 이 제어 회로소자(56)는, 기억소자(52)로부터 사용 표시를 수신하고, 이것에 근거하여 역치(58)의 설정을 제어한다. 예컨대, 이 사용 표시는, 기억소자(52)의 현재의 점유율이어도 된다. 이러한 특징은, 기억소자(52)의 용량이 (그 밖의 시스템 요구사항에 의해) 보다 큰 요구가 있을 때, 역치가 저하될 수 있도록 제공되고, 이는 NT 카운터(54)를 제공하기 위해 기억소자(52)를 별로 요구하지 않는다는 것을 의미한다. 기억소자952)의 용량이 그 밖의 시스템 요구사항에 의해 보다 덜 요구가 있을 때, 역치가 상승될 수 있어, 오히려 기억소자(52)를 NT 카운터(52)로서 사용되게 한다. 역치(58)는, 이렇게 자유롭게 설정될 수 있고, 심지어 제로로 감소될 수도 있다. 상이하게 설정된 역치들에 응답하여 상이한 작용들에 대해서 보다 상세히 후술한다.
도 5a는 좌측에 분기 명령들만을 포함하는 명령 시퀀스를 도시하고 있다. 비분기 명령들은, 도시된 분기 명령 사이에 인터리브될 수 있지만(될 가능성이 있지만) 본 설명과 관련되는 것이 아니므로 설명의 명백함을 기하기 위해서만 생략된다. 분기 명령의 3개의 타입의 예들, 즉 B(분기); BNE(동일하지 않은 분기); 및 BEQ(동일한 분기)가 도시되어 있다. 일부는 (본 실행 시퀀스의 예에서) 테이큰인 것으로서 도시되어 있고; 나머지는 낫 테이큰이다. 본 도면의 우측에는, 결과적인 추적 스트림이 있다. 본 예에서, 3개 중 역치는 낫 테이큰 카운터를 위해 설정되었다. 결과적으로, 제1 테이큰 분기는 "E"(실행된) 원자를 출력시킨다. 다음 2개의 낫 테이큰 분기 각각은, "N"(비실행된) 원자를 출력시킨다. 또한, 다음 테이큰 분기도 "E" 원자를 출력시킨다. 그렇지만, 이후의 4개의 낫 테이큰 분기들의 시퀀스는, 낫 테이큰 카운터를 위한 3개의 세트의 역치를 초과하고 그 결과 "N" 원자들이 출력되지 않고, 오히려 다음의 테이큰 분기는 대응한 분기 명령의 소스 어드레스를 명시적으로 추적(출력)시킨다.
도 5b는 전형적인 코딩 루프를 형성하는 4개의 명령들의 명령 시퀀스의 추가의 예를 도시한 것이다. 또한, 본 예에서, 이 루프는, 프로그램 흐름이 이 루프를 빠져나가기 전에 여러 번 반복되고, 이때의 BNE 명령들 #2 및 #3은 반복적으로 취해지지 않고 BEQ 명령 #4는 반복적으로 취해진다. 그러므로, 동시대의 (추론적) 프로세서는, 보통 이러한 특별한 코드 시퀀스의 실행을 최적화하여, 효율적으로 도 5b의 하부에 도시된 절단된 코드 시퀀스, 즉 비교 CMP #1와 BEQ #4만으로 변환할 것이다. 이러한 종류의 (BNE들을 제거하는) "최적화"를 수행하도록 구성된 장치의 경우, 이러한 액션도, 추적 모드를 변경시키기 위해, 즉 소스 어드레스를 출력시키기 위해, 비록 2 N 원자의 카운트가 (설령, 3개 중) 현재 정의된 역치이하일지라도, 트리거로서 사용될 수 있다.
도 5c는 최종 BEQ #5의 추적을 위한 2개의 가능성을 도시하는 코드 시퀀스의 다른 예를 도시한 것으로, 이들은 단지, 그것의 소스 어드레스를 추적하는 것(이때의 "취해졌다"는 사실은 묵시적이다) 또는, 먼저 소스 어드레스를 추적한 후, 명시적 "E" 원자를 추적하는 것일 뿐이다. 달리 말하면, "A"의 예에서, 추적 스트림에 있어서의 소스 어드레스의 존재는 최종 분기가 취해졌다는 것을 암시하고, "B"의 예에서, 추적 스트림에 있어서의 소스 어드레스의 존재는 최종 분기에 대해서 아무것도 없는 것을 암시하고, E 원자는 그 분기가 취해졌다는 것을 명시적으로 가리킨다.
도 6a는 방법의 일례에서 취해진 단계들의 시퀀스를 도시하는 흐름도다. 그 흐름은, 단계 100에서 시작하는 것으로 하여, 데이터 처리 회로소자가 접하는 명령마다, 그 명령이 분기 명령인지를 판정한다. 흐름은 그 밖의 타입의 명령에 대해서는 단계 100에서 스스로 순환한다. 그렇지만, 분기 명령에 접할 때, 단계 102에서는 분기가 테이큰 또는 낫 테이큰인지를 판정한다. 낫 테이큰 분기의 경우, 단계 104에서, 낫 테이큰 카운터를 증분시키고(그렇게 구체화되는 경우, 포화시켜도 된다는 것을 주목함), 흐름은 단계 100으로 복귀한다. 테이큰 분기들의 경우는, 흐름은 단계 106으로 진행되어, 낫 테이큰 카운터가 상기 정의된 역치 또는 역치 이상인지(예컨대, 포화되어 있는지)를 판정한다. 이 조건이 참일 경우, 흐름은 단계 108로 진행되어, 테이큰 분기의 소스 어드레스를 출력시킨다. 그 후, 단계 110에서, 낫 테이큰 카운터를 리셋트시킨다. 그렇지만, 단계 106에서 그 조건이 참이 아닌 경우, 흐름은 단계 112로 진행되고, 추적 생성 회로소자는 낫 테이큰 카운터가 현재 가리킬 만큼 많은 N 원자들(낫 테이큰 추적 항목들)을 출력한다. 그러므로, 이것은, 없거나, 하나이거나, 낫 테이큰 카운터가 그것의 역치 이하를 가리킬 수 있는 만큼 많을 수 있다. 그 후, 단계 114에서는 E 원자(테이큰 추적 항목)를 출력시키고, 단계 110에서 낫 테이큰 카운터를 리셋트시킨다. 단계 110으로부터 흐름은 단계 100으로 복귀한다.
도 6a의 단계 112에 대한 최종의 포인트로서, 본 기술들이 역치가 가변적이어도 되는 것을 제안한 것을 상기하면, 나중에 이것이 의미하는 것은 역치의 설정에 의해 구성되어도 되는 작용의 카테고리가 3개 있다라는 것을 주목한다. 첫째, 역치가 0으로 설정되는 경우, 모든 테이큰 분기에 의해 대응한 소스 어드레스가 추적될 것이다. 둘째, 역치가 1로 설정되는 경우, a) (최종 테이큰 분기 이후에) 낫 테이큰 분기들에 접해져 있지 않으면, 테이큰 분기에 의해 E 원자가 추적될 것이고, 또는 b) 임의의 낫 테이큰 분기들이 (최종 테이큰 분기 이후에) 접해져 있으면, 테이큰 분기에 의해 대응한 소스 어드레스가 추적될 것이다. 셋째, 역치가 1이상으로 설정되는 경우(그것을 여기서는 "x"라고 함), a) (최종 테이큰 분기 이후에) "x"보다 적은 수(그것을 여기서는 "y"라고 함)의 낫 테이큰 분기들에 접해져 있으면 테이큰 분기에 의해 "y" N 원자들이 출력된 후, E 원자가 출력될 것이거나, 또는 b) (최종 테이큰 분기 이후에) "x"이상의 낫 테이큰 분기들에 접해져 있으면 테이큰 분기에 의해 대응한 소스 어드레스가 추적될 것이다.
도 6b는 도 6a의 흐름도의 변형 예를 도시한 것으로, 그 변형 예는, 단계 106과 단계 112 사이에 판정 단계 107만이 추가된 도 6a와 동일한 흐름이다. 따라서, 단계 106으로부터 상기 조건이 참이 아닐 경우, 단계 107에서는, (이 분기들이 (현재) 드물게 취해진다고 판정될 때) "최적화"(성능 향상) 과정에서 (현재의 명령들의 시퀀스에서의) 분기 명령들이 제거되어 있다는 표시를 수신하였는지를 시험하기 위해 추가로 판정한다. 이것이 참이 아닐 경우는, 흐름은 단계 112로 진행되고, 상기 추적 생성 회로소자는 낫 테이큰 카운터가 현재 가리킬 만큼 많은 N개의 원자들(낫 테이큰 추적 항목들)을 출력한다. 그렇지만, 이것이 참일 경우, 흐름은 단계 108로 진행되어, 테이큰 분기의 소스 어드레스를 출력한다.
도 7 및 도 8은 예외들의 핸들링에 대한 2개의 방법의 예에서 취해지는 단계들의 시퀀스를 도시하는 흐름도다. 이 때문에, 도 7 및 도 8은, 예컨대, 도 6a( 및 도 6b)에 도시된 방법의 단계들을 병행하여 각기 실행하여도 되는 프로세스들이라는 것을 이해해야 한다는 것을 주목하는 것이 중요하다. 달리 말하면, 도 6a( 및 도 6b)는 본 기술들에서 분기 명령들을 어떻게 추적하는지의 예들을 도시한 것이고, 이와 병행하여 도 7 및 도 8의 각각은 본 기술들을 구현할 때 예외들을 어떻게 핸들링하는지의 예들을 도시한 것이다. 게다가, 이 예외 핸들링 기술들은 도 1-4에 도시된 장치 실시예들 중 임의의 실시예에 구현되어도 되고, 단지 예로만, 데이터 처리 회로소자(32)로부터 추적 생성 회로소자(34)에 건네는 예외 신호가 도 3에 도시되어 있다.
도 7에서는, 단계 120에서 흐름을 시작하는 것으로 할 수 있고, 이 단계에서는 예외가 일어났는지를 판정한다. 단계 120의 흐름이 자체에서 다시 순환하지 않으면, 이 단계에서 대기한다. (효과적으로 일부의 다른 코드로 분기를 야기시키는) 예외가 일어날 때, 흐름은 단계 122로 진행되어, 낫 테이큰 카운터가 상기 정의된 역치이상인지(예컨대, 포화되었는지)를 판정한다. 이것이 참이 아닐 경우, 추적 생성기는, 낫 테이큰 카운터가 현재 가리킬 만큼 많은 N개의 원자들(낫 테이큰 추적 항목들)을 출력한다(즉, COUNTER*N-atoms를 출력한다). 그 후, 단계 126에서는, (분기 명령상에서 예외가 일어나지 않았을지도 모르기 때문에, 행해져야 하는) 예외가 취해졌던 장소를 가리키는 예외 패킷을 출력한다. 그렇지만, 단계 122에서 낫 테이큰 카운터가 상기 정의된 역치이상인 것(예컨대, 포화된 것)을 찾은 경우, 흐름은 단계 126으로 직접 진행되고, 그 예외가 취해졌던 장소를 가리키는 예외 패킷만을 출력한다. 이것이 암시하는 것은, 임의의 분기 명령들이, 마치 도 6a 및 6b의 예들에서의 소스 어드레스 추적 항목처럼, 취해지지 않았다는 것이다. 끝으로, 단계 128에서는, 낫 테이큰 카운터를 리셋트시키고 흐름은 단계 120으로 복귀한다.
도 8은 도 7에 도시된 것에 대한 예외 핸들링에 대한 다른 해결방법을 도시한 것이다. 여기서, 모든 상황에서, 예외가 취해졌던 장소를 가리키는 예외 패킷만이 출력된다. 여기서 설명된 "현재의 상태 조건"의 사용의 관점에서, 그 예외는 현재의 상태 조건을 충족시키지 않는다. 도 8에 있어서, 흐름은 단계 140에서 시작하는 것으로 할 수 있고, 이 단계에서는, 예외가 일어났는지를 판정한다. 단계 140의 흐름이 자체에서 다시 순환하지 않으면, 이 단계에서 대기한다. (효과적으로 일부의 다른 코드로 분기를 야기시키는) 예외가 일어날 때, 흐름은 단계 142로 진행되어, (분기 명령상에서 예외가 일어나지 않았을지도 모르기 때문에, 행해져야 하는) 예외가 취해졌던 장소를 가리키는 예외 패킷을 출력한다. 끝으로, 단계 144에서는, 낫 테이큰 카운터를 리셋트시키고 흐름은 단계 144로 복귀한다.
간단한 전반적인 요약에 있어서, 장치는, 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 데이터 처리 회로소자를 구비한다. 추적 생성 회로소자는, 데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성한다. 상기 추적 생성 회로소자는, 명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후의 테이큰 분기 명령에 응답하여: 상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하고, 상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는, 회로소자다. 따라서, 낫 테이큰 분기 명령들을 추적하는 것과 테이큰 분기 명령과 관련된 소스 어드레스를 추적하는 것 사이의 혼합형 해결방법이 제공된다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 상기 명시된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 명시된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소가 임의의 방식으로 상기 명시된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 그 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위 및 사상으로부터 벗어나지 않고 당업자가 변경, 부가 및 수정을 여러 가지로 실시할 수 있다는 것을 알 수 있다. 예를 들면, 본 발명의 범위로부터 벗어나지 않고 종속항의 특징들과 독립항의 특징들을 여러 가지로 조합할 수 있다.

Claims (22)

  1. 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 데이터 처리 회로소자; 및
    데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 추적 생성 회로소자를 구비하는 장치로서,
    추적 생성 회로소자는, 명령들의 시퀀스에서 하나 이상의 낫 테이큰(not-taken) 분기 명령들 후의 테이큰 분기 명령에 응답하여:
    상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하고;
    상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는 회로소자인, 장치.
  2. 제 1 항에 있어서,
    현재의 상태 조건은, 하나 이상의 낫 테이큰 분기 명령들의 중복도를 포함하는, 장치.
  3. 제 2 항에 있어서,
    상기 장치의 현재의 상태 조건은, 역치미만인 중복도인, 장치.
  4. 제 3 항에 있어서,
    낫 테이큰 분기 명령에 응답하여 증분하는 낫 테이큰 카운터를 더 구비하는, 장치.
  5. 제 4 항에 있어서,
    낫 테이큰 카운터는 역치에서 포화시키도록 배치된 포화 카운터인, 장치.
  6. 제 4 항 또는 제 5 항에 있어서,
    낫 테이큰 카운터는 1비트 기억소자를 구비하는, 장치.
  7. 제 4 항 또는 제 5 항에 있어서,
    낫 테이큰 카운터는 다수 비트 기억소자를 구비하는, 장치.
  8. 제 4 항 내지 제 7 항 중 어느 한 항에 있어서,
    추적하는 추적 생성 회로소자는, 명령들의 시퀀스에서 테이큰 분기 명령에 응답하여, 상기 장치의 현재의 상태 조건이 충족될 때 낫 테이큰 카운터가 가리킬 만큼 많은 추적 스트림에서의 낫 테이큰 추적 항목들을 포함하는 회로소자인, 장치.
  9. 제 4 항 내지 제 8 항 중 어느 한 항에 있어서,
    추적하는 추적 생성 회로소자는, 데이터 처리 회로소자에서 예외의 발생에 응답하여, 예외가 일어난 명령들의 시퀀스에서의 포인트를 나타내는 예외 추적 항목을 추적 스트림에 포함하고 낫 테이큰 카운터를 리셋트시키는 회로소자인, 장치.
  10. 제 9 항에 있어서,
    추적하는 추적 생성 회로소자는, 데이터 처리 회로소자에서 예외의 발생에 응답하여, 낫 테이큰 카운터가 가리킬 만큼 많은 추적 스트림에서의 낫 테이큰 추적 항목들을 포함하는 회로소자인, 장치.
  11. 제 3 항 내지 제 10 항 중 어느 한 항에 있어서,
    역치는 상기 장치를 위한 소정의 정적값인, 장치.
  12. 제 3 항 내지 제 10 항 중 어느 한 항에 있어서,
    역치는 가변값인, 장치.
  13. 제 12 항에 있어서,
    추적 생성 회로소자는, 상기 장치를 위한 현재의 자원 사용 표시에 응답하여, 동적으로 역치를 설정하는 회로소자인, 장치.
  14. 제 13 항에 있어서,
    상기 장치를 위한 현재의 자원 사용 표시는, 상기 장치내의 기억소자의 현재의 점유율을 가리키는, 장치.
  15. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 장치의 현재의 상태 조건은, 상기 장치내의 기억소자의 현재의 점유율을 포함하는, 장치.
  16. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    테이큰 추적 항목은, 테이큰 분기 명령의 분기가 취해졌다는 표시인, 장치.
  17. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    테이큰 추적 항목은, 분기 명령과 관련된 소스 어드레스인, 장치.
  18. 제 1 항 내지 제 15 항 중 어느 한 항에 있어서,
    테이큰 추적 항목은, 분기 명령과 관련된 소스 어드레스 후에 테이큰 분기 명령의 분기가 취해졌다는 표시인, 장치.
  19. 선행하는 청구항 중 어느 한 항에 있어서,
    테이큰 추적 항목은, 분기가 간접 분기일 때, 분기용 타겟 어드레스의 표시를 더 포함하는, 장치.
  20. 선행하는 청구항 중 어느 한 항에 있어서,
    추적 생성 회로소자는, 성능 향상 과정에서 명령들의 시퀀스로부터 적어도 하나의 분기 명령을 데이터 처리 회로소자가 제거한 표시에 응답하여, 상기 장치의 현재의 상태 조건이 충족되지 않는다고 판정하는 회로소자인, 장치.
  21. 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 단계; 및
    데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 단계를 포함하는, 장치의 연산방법으로서,
    명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후 테이큰 분기 명령이 있을 때, 데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 단계는:
    상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하는 것; 및
    상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 상기 장치의 현재의 상태 조건 포함하는 것을 포함하는, 장치의 연산방법.
  22. 분기 명령들을 포함하는 명령들의 시퀀스에 응답하여 데이터 처리 연산들을 수행하는 수단; 및
    데이터 처리 연산들을 나타내는 추적 항목들의 추적 스트림을 생성하는 수단을 구비하는, 장치로서,
    명령들의 시퀀스에서 하나 이상의 낫 테이큰 분기 명령들 후의 테이큰 분기 명령이 있을 때, 상기 생성하는 수단은:
    상기 장치의 현재의 상태 조건이 충족될 때, 추적 스트림에 있어서 하나 이상의 낫 테이큰 분기 명령들에 대응한 적어도 하나의 낫 테이큰 추적 항목 후의 테이큰 추적 항목을 포함하는 수단; 및
    상기 장치의 현재의 상태 조건이 충족되지 않을 때, 추적 스트림에 있어서 테이큰 분기 명령과 관련된 소스 어드레스를 포함하는 수단을,
    활성화시키는, 장치.
KR1020207027904A 2018-03-13 2019-03-05 분기 명령의 추적 KR20200128702A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1803991.7A GB2571947B (en) 2018-03-13 2018-03-13 Tracing branch instructions
GB1803991.7 2018-03-13
PCT/GB2019/050606 WO2019175540A1 (en) 2018-03-13 2019-03-05 Tracing branch instructions

Publications (1)

Publication Number Publication Date
KR20200128702A true KR20200128702A (ko) 2020-11-16

Family

ID=61972700

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207027904A KR20200128702A (ko) 2018-03-13 2019-03-05 분기 명령의 추적

Country Status (7)

Country Link
US (1) US11275670B2 (ko)
EP (1) EP3765963B8 (ko)
JP (1) JP7361040B2 (ko)
KR (1) KR20200128702A (ko)
CN (1) CN111819551A (ko)
GB (1) GB2571947B (ko)
WO (1) WO2019175540A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11822468B2 (en) 2019-05-24 2023-11-21 Microsoft Technology Licensing, Llc Executable code branch annotations for objective branch verification
US20220308878A1 (en) * 2021-03-29 2022-09-29 SiFive, Inc. Branch-History Mode Trace Encoder
US11803440B2 (en) * 2021-09-30 2023-10-31 Vmware, Inc. Automated methods and systems for troubleshooting and optimizing performance of applications running in a distributed computing system

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5622151A (en) * 1979-07-31 1981-03-02 Fujitsu Ltd Branch address recording system
US7062684B2 (en) * 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US7707394B2 (en) 2006-05-30 2010-04-27 Arm Limited Reducing the size of a data stream produced during instruction tracing
US7984337B2 (en) * 2009-02-19 2011-07-19 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8484517B2 (en) * 2009-12-03 2013-07-09 Infineon Technologies Ag High compression program flow trace
US8489866B2 (en) * 2010-06-30 2013-07-16 International Business Machines Corporation Branch trace history compression
US9753832B2 (en) * 2013-06-28 2017-09-05 Intel Corporation Minimizing bandwith to compress output stream in instruction tracing systems
JP6221966B2 (ja) 2013-08-29 2017-11-01 株式会社デンソー マイクロコンピュータ
US20160378636A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Software-Initiated Trace Integrated with Hardware Trace
CN107045474B (zh) * 2016-02-05 2020-12-04 阿里巴巴集团控股有限公司 一种Fuzz测试中的程序流跟踪方法及装置
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

Also Published As

Publication number Publication date
GB2571947B (en) 2020-09-16
JP7361040B2 (ja) 2023-10-13
GB201803991D0 (en) 2018-04-25
CN111819551A (zh) 2020-10-23
EP3765963A1 (en) 2021-01-20
WO2019175540A1 (en) 2019-09-19
EP3765963B8 (en) 2022-06-15
US11275670B2 (en) 2022-03-15
JP2021517298A (ja) 2021-07-15
US20200371891A1 (en) 2020-11-26
EP3765963B1 (en) 2022-05-04
GB2571947A (en) 2019-09-18

Similar Documents

Publication Publication Date Title
CN109144515B (zh) Dcs图形化算法组态的离线仿真方法和装置
KR20200128702A (ko) 분기 명령의 추적
JP4484925B2 (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
US8578355B1 (en) Scenario based optimization
JP5611756B2 (ja) プログラム・フロー制御
JP2004302706A (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
US11861394B2 (en) Automated semantic tagging
WO2007045920A3 (en) System and method for the backward debugging of computer programs
CN110603527A (zh) 服务器侧生产代码的有条件调试
KR20110070468A (ko) 인스트루먼테이션 실행 장치 및 방법
KR20180034501A (ko) 동적 벡터 길이의 루프를 이용한 벡터 처리
JP6401235B2 (ja) コントラクトのためのオペレーティングシステムサポート
CN103218219B (zh) 用于为叶函数产生紧凑函数跟踪数据的方法及系统
WO2016168216A1 (en) Checkpointing higher order query operators
KR20120036208A (ko) 재구성 기반 컴퓨팅 장치 및 이의 메모리 의존성 보정방법
US9430196B2 (en) Message inlining
KR20200090103A (ko) 분기 예측기
JP2018163656A (ja) 追跡データ表現
US20100318751A1 (en) Multiple error management in a multiprocessor computer system
US9870599B2 (en) Analysis system and method for reducing the control flow divergence in the Graphics Processing Units (GPUs)
US10387152B2 (en) Selecting branch instruction execution paths based on previous branch path performance
US20140013312A1 (en) Source level debugging apparatus and method for a reconfigurable processor
JP6179524B2 (ja) 実行制御方法及び情報処理装置
CN111309514B (zh) 一种gpgpu寄存器的纠错码生成方法
JP2013134670A (ja) 情報処理装置及び情報処理方法

Legal Events

Date Code Title Description
A201 Request for examination