KR20070057944A - 비-개입적 추적 방법 및 장치 - Google Patents

비-개입적 추적 방법 및 장치 Download PDF

Info

Publication number
KR20070057944A
KR20070057944A KR1020077008499A KR20077008499A KR20070057944A KR 20070057944 A KR20070057944 A KR 20070057944A KR 1020077008499 A KR1020077008499 A KR 1020077008499A KR 20077008499 A KR20077008499 A KR 20077008499A KR 20070057944 A KR20070057944 A KR 20070057944A
Authority
KR
South Korea
Prior art keywords
counters
tracking
information
events
trace
Prior art date
Application number
KR1020077008499A
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 KR20070057944A publication Critical patent/KR20070057944A/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/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
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • 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/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • 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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 비-개입적 추적 방법 및 장치를 개시한다. 상기 방법은 선택된 이벤트들을 복수의 카운터들에 의해 카운트하는 단계; 미리 정의된 트리거 이벤트들에 응답하여 복수의 카운터 값들을 검색하도록 복수의 카운터들을 샘플링하는 단계; 적어도 한 프로그램 카운터 값을 포함하는 추가의 추적 정보를 수신하는 단계; 및 복수의 카운터들의 값들 및 추가의 추적 정보 중 적어도 하나는 추적 정보로서 출력하는 단계를 포함한다.
비-개입적 추적, 트리거 이벤트, 추적 정보, 프로그램 카운터

Description

비-개입적 추적 방법 및 장치{Method and apparatus for non-intrusive tracing}
본 발명은 프로세서 기반의 디바이스에서 발생하는 이벤트들을 추적하는 방법들 및 장치들에 관한 것으로서, 특히 비-개입적(non-intrusive) 추적 방법들 및 장치들에 관한 것이다.
최신의 마이크로프로세서들은 매우 복잡하다. 이들은 보통 매우 높은 속도로 복수의 태스크들을 실행할 수 있는 복수의 성분들을 포함한다. 많은 최신의 디바이스들은 보통 하나 이상의 프로세서들, 제어기들, 및 캐시 메모리드들을 포함하는 다양한 메모리 모듈들을 포함한다.
컴퓨터화된 시스템들이 동작하는 방법을 반영할 수 있는 정보를 추출하기 위한 다양한 시스템들 및 방법들이 공지되어 있다. 이들 장치들은 온칩 디버거들, 온칩 에뮬레이터들 등을 포함한다.
NEXUS로서도 알려진 IEEE-ISTO 5001™ 표준은 내장된 제어 애플리케이션들을 위한 표준 디버그 인터페이스를 정의한다. NEXUS는 비교적 한정된 량의 디버깅 정보를 제공하나 프로세서를 제어할 수 있다. 추적된 정보는 전용 I/O 핀들을 통해서 혹은 JTAG 인터페이스를 통해 전송될 수 있으나, 이것은 반드시 그렇게 되는것은 아니다.
본원에 참조문헌으로 포함되는 다음의 미국특허들 및 미국특허출원은 일부 최신의 디버깅 및 에뮬레이션 장치들 및 방법들의 예를 제공한다: "System for tracing hardware counters utilizing programmed trace interrupt after each branch instruction or at the end of each code basic block" 명칭의 Smoders의 미국특허 653338; "Accessing diagnostic program counter value data within data processing system" 명칭의 Williams 등의 미국특허출원 2002/0049893; "Circuit for storing trace information" 명칭의 Edwards 등의 미국특허 6615370; 및 "Programmable hardware event monitoring method" 명칭의 VanHuben 등의 미국특허 6134676.
복잡한 프로세서 기반 시스템들의 행위(behavior)을 나타내는 상당량의 정보, 특히 서로에 관계된 이벤트들의 관한 정보를 제공할 필요성이 있다.
표준화된 인터페이스들을 통한 표준 추적 정보의 제공을 방해하지 않으면서, 공지의 표준들에 의해 요구되는 정보 외에도 추적 정보를 제공할 필요성이 있다.
본 발명은 선택된 이벤트들을 카운트하는 복수의 카운터 값들을 반영할 수 있는 추적 정보를 제공할 수 있게 한다. 추적 정보는 상기 값들 대신에, 혹은 상기 값들에 더하여, 추가의 추적 정보를 포함할 수 있다. 추가의 추적 정보는 프로그램 카운터 값, 프로세서의 특권 레벨 및 태스크 ID 중 적어도 하나를 포함한다.
본 발명은 수신된 추가의 추적 정보에 응답하여 하나 이상의 카운터들의 내용값을 샘플링할 수 있게 한다. 본 발명은 프로세서 이외의 성분들의 이벤트들에 관계된 정보뿐만 아니라 프로세서에 연관된 이벤트들에 관계된 정보를 제공할 수 있게 한다. 본 발명은, (i) 복수의 선택된 이벤트들을 카운트하는 복수의 카운터들, (ii) 상기 복수의 카운터들에 결합되며, 트리거 이벤트들에 응답하여 복수의 카운터들의 값들을 제공하기 위해 심리스 방식으로 상기 복수의 카운터들을 샘플링하는 복수의 새도우 레지스터들; (iii) 상기 복수의 카운터들 및 상기 복수의 새도우 레지스터들에 결합되며, 상기 복수의 카운터들 및 복수의 새도우 레지스터들의 동작을 제어하게 동작하는 카운터들 및 레지스터들 로직; (iv) (i) 상기 복수의 카운터들의 값들을 수신하고 적어도 하나의 프로그램 카운터 값을 포함하는 추가의 추적 정보를 수신하며, (ii) 복수의 카운터들의 값들을 수신하며, 적어도 하나의 프로그램 카운터 값과, 다음 중 적어도 하나로서 프로세서 특권 레벨 표시 및 태스크 ID를 포함하는 추가의 추적 정보를 수신하고, (ii) 복수의 카운터들의 값들과 추가의 추적 정보 중 적어도 하나를 출력하도록 구성된 것으로, 상기 복수의 새도우 레지스터들에 결합된 추적 로직을 포함하는 비-개입적 추적을 위한 장치를 제공한다. 본 발명은 (i) 선택된 이벤트들을 복수의 카운터들에 의해 카운트하는 단계; (ii) 미리 정의된 트리거 이벤트들에 응답하여 복수의 카운터 값들을 검색하도록 복수의 카운터들을 샘플링하는 단계; (iii) 적어도 하나의 프로그램 카운터 값, 프로세서 특권 레벨 표시 및/또는 태스크 ID를 포함하는 추가의 추적 정보를 수신하는 단계; 및 (iv) 복수의 카운터들의 값들 혹은 추가의 추적 정보, 혹은 이들 둘 다를 추적 정보로서 출력하는 단계를 포함하는, 비-개입적 추적을 위한 방법(900)을 제공한다.
본 발명은 도면에 관련하여 다음의 상세한 설명으로부터 이해되고 보다 완전히 알 것이다.
도 1은 본 발명의 실시예에 따른 시스템의 개략도.
도 2는 본 발명의 실시예에 따른 디버깅 및 프로파일링 유닛의 개략 설명도.
도 3-5는 본 발명의 실시예에 따라 각종 제어 레지스터들을 도시한 도면들.
도 6-7은 본 발명의 실시예에 따라 비-개입적 추적을 위한 방법들의 흐름도들.
도 1은 본 발명의 실시예에 따른 시스템(100)을 도시한 것이다. 시스템(100)은 디지털 신호 프로세서(DSP 혹은 프로세서라 함)(110), 데이터 채널(130), 메모리 관리 유닛(MMU)(300), 명령 채널(340), 레벨-1 RAM 메모리(370) 및 인터페이스 유닛(380)을 포함한다.
프로세서(110), 명령채널(340), 공유 메모리(370) 및 MMU(300)은 단일 프로그램 버스(120)에 접속된다. 명령채널(340)은 명령 캐시 모듈(350)과, 명령 캐시 모듈(350)에 대해 명령 페치 및 프리-페치를 행하는 명령 페치 유닛(IFU)(360)을 포함한다.
DSP(110)는 제1 데이터 포트(116) 및 제2 데이터 포트(118)를 구비한다. 제1 데이터 포트(116)는 제1 데이터 버스(XA)(122)를 통해서 데이터 채널(130)의 제1 포트(132), MMU(300) 및 레벨-1 RAM 메모리(370)에 접속된다. 제2 데이터 포트(118)는 제2 데이터 버스(XB)(124)를 통해 데이터 채널(130)의 제2 포트(134), MMU(300), 및 레벨-1 RAM 메모리(370)에 접속된다. 설명의 단순성을 위해서 데이터 버스 및 어드레스 버스 각각에 연관된 어드레스 버스들은 도시하지 않았다. 데이터 채널(130)은 데이터 페치 버스(126)를 통해, 하이-레벨 메모리(50)와 같은 하나 이상의 추가의 메모리들에 차례로 접속되는 인터페이스(380)에 접속된다. 추가의 메모리들은 복수-레벨 캐시 구조의 일부일 수 있고, 데이터 채널 내의 데이터 캐시 모듈은 제1 레벨 캐시 모듈이고 다른 메모리들은 레벨 2 캐시들 및/또는 메모리들이다. 이들은 또한 주 메모리라고도 칭하는 외부 메모리의 일부일 수도 있다.
MMU(300)은 프로그램 및 데이터 하드에어 보호를 제공하는 하드에어 보호 유닛(320), 및 고속 가상 어드레스를 물리 어드레스로의 전환을 위한 전환유닛(310)을 포함한다. MMU(330)은 다양한 캐시 및 버스 제어 신호들을 제공할 수 있다. 가상 어드레스는 프로세서(100)에 의해 발생되며, 프로세서(110)에 의해 실행되는 코드에 의해 파악되는 어드레스이다. 물리적 어드레스는 각종 메모리 뱅크들을 액세스하는데 사용된다. 데이터 채널(130)은 추적 기입 버퍼(Trace Write Buffer; TWB)(160), 이를테면 캐시 메모리 및 하나 이상의 추가의 기입 버퍼들과 같은 복수 메모리 엔터티들(일괄하여 162로 표기함), TWB(160)와 이외 메모리 엔터티들(162)의 버스 요청들간을 조정하는 데이터 제어 유닛(Data Control Unit; DCU)(150)을 포함한다. DCU(150)는 다양한 공지의 조정 방식들을 적용할 수 있다. 편리하게, DCU(150)는 미리 정의된 우선도들에 따라 여러 버스 요청들간을 조정한다. TWB(160)은 보통 TWB(160)로부터 낮은 우선도 버스 요청들을 발생하나 어떤 경우들에 있어서는 높은 우선도 버스 요청들도 발행할 수 있다.
도 2는 본 발명의 실시예에 따른 디버깅 및 프로파일링 유닛(DPU)(500)의 개략도이다.
DPU(500)는 3개의 카운터들의 2세트 각각에 배열된 카운터들(611-616)과 같은 복수의 카운터들, 복수의 새도우 레지스터들(621-626), 카운터들 및 레지스터들 로직(610), ID 비교 로직(645), NEXUS 인터페이스(675), 인터페이스(629) 및 추적 기입 관리유닛(640)과 같은 복수의 추적 로직 유닛들, 제1 스위치 유닛(650), 압축기(655), 제2 스위치 유닛(670), 및 추적 정보 로직(652)을 포함한다. DPU(500)는 온칩 에뮬레이터 유닛(EOnCE 유닛이라고 함)(502)에, NEXUS 블록(504)과 같은 하이레벨 추적 정보 성분에, 및 TWB(160)에 접속된다. 본 발명의 다른 실시예들에 따라서, 추적 로직은 ID 비교 로직(645), NEXUS 인터페이스(675), 인터페이스(629), 추가의 유닛들 혹은 앞서 언급된 것 미만의 유닛들 중 적어도 하나를 포함한다. EOnCE 유닛(502)와 같은 온칩 에뮬레이선 유닛들은 잘 알려져 있다. EOnCE 유닛(502)은 참조문헌으로 본원에 포함되는 SC140e™ DSP 코어 참조 매뉴얼의 4장에 기술되어 있다.
EOnCE 유닛(502)은 다양한 레지스터들, 프로그램 카운터들(PC) 등에의 특정 량의 액세스를 허용한다. 이것은 JTAG 순응 신호들(테스트 데이터 입력(TDI), 테스트 데이터 출력(TDO), 테스트 클럭 입력(TCK), 테스트 모드 선택 입력(TMS) 및 테스트 리셋(TRST))을 제공하기 위해 JTAG 인터페이스 유닛과 인터페이스한다. 간단 히, EOnCE 유닛(502)은 EOnCE 제어기, 이벤트 카운터, 추적유닛, 이벤트 검출유닛, 이벤트 선택기 및 동기화 유닛을 포함한다. 이벤트 검출유닛은 6개의 어드레스 이벤트 검출 채널들(EDCA5 - EDCAO)을 포함하고, 그 각각은 제1 혹은 제2 데이터 버스들(XA(122) 및 XB(124)) 중 어느 하나에 연관된 어드레스 라인들에 어떤 어드레스의 출현(혹은 어떤 어드레스 범위에 속하는 어드레스의 출현)을 검출할 수 있다.
EOnCE 유닛(502)은 다양한 동작모드로, 그리고 (i) TEXEXT - 각 실행 세트의 PC를 추적, (ii) TMARK - MARK 명령을 포함하는 실행 세트들의 PC를 추적, (iii) TCHOF - 흐름 명령의 미리 정의된 변화를 포함하는 실행세트의 소스 및 목적지 PC의 추적, (iv) TLOOP - 하드웨어 루프들의 실행 추적으로서, 긴 루프들에 대해 마지막 어드레스 및 시작 어드레스의 PC가 추적되고 짧은 루트들에 대해서 마지막 어드레스의 PC만이 추적되는 것, (v) TSUB - 서브루틴 호출 혹은 리턴 명령들을 포함하는 실행세트들의 소스 및 목적지 PC를 추적, (vi) TRTE - 예외 명령으로부터의 리턴을 포함하는 실행세트들의 소스 및 목적지 PC를 추적, 및 (vii) TINT - 인터럽트들 및 예외들의 인터럽트 포인트 및 목적지 PC를 추적을 포함하는 여러 가지 이벤트들을 추적하기 위해 동작할 수 있다. 또한, 추적 이벤트시 카운터 값과 확장 카운터 값이 추적될 수 있다.
일반적으로, 일단 흐름의 변화가 발생하면 EOnCE 유닛(502)은 프로세서의 특권 레벨을 반영하는 태스크 플래그뿐만 아니라 하나 이상의 프로그램 카운터 값들을 제공할 수 있다.
카운터들 및 레지스터들 로직(610)은 카운터들(611-616)에 의해 어떤 이벤트 들을 카운트할 것인가를 결정하기 위해 제어 레지스터들(710-736)과 같은 복수의 제어 레지스터들을 포함하며, 여기서 이벤트들은 새도우 레지스터들(621-626)로 하여금 비-개입적으로 카운터들(611-616)을 샘플링하게 할 것이다.
카운터들(611-616)에서 각각의 카운터는 단발(one-shot) 카운팅 모드로 그리고 추적모드로 동작할 수 있는 31비트 다운 카운트 레지스터(down count register)이다. 단발 카운트 모드에서 카운터는 어떤 프로그램된 값부터 제로로 카운트한 후 이벤트를 생성하고 카운트하는 것을 정지한다. 이 이벤트는 프로세서(100)를 디버그 모드에 진입할 수 있게 하며, 디버그 예외 혹은 디버그 인터럽트를 시작하게 할 수 있다. 추적모드에서, 카운터는 카운트하는 것을 유지하여 제로에 도달하여, 랩 어라운드(wrap around) 하고 계속하여 카운트한다. 카운터들(611-616)의 내용값은 추적 이벤트시 새도우 레지스터들(621-626)에 의해 읽혀진다. DPU(500)는 TWB(160)을 통해, EOnCE에 의해 생성된 혹은 DPU(500)에 의해 생성된 추적 정보를 가상 추적 버퍼(VTB)(560)에 기입할 수 있다. 또한, 외부 NEXUS 블록(504)에 추적 정보를 기입할 수 있다.
VTB(670)는 편리상, 후술하는 각종 제어 레지스터들에 저장되어 있는 시작 어드레스와 종료 어드레스에 의해 정의되는 하이레벨 메모리 모듈(50) 내의 메모리 공간이다. 제어 레지스터들은 추적 정보를 수신할 현 메모리 엔트리를 가리키는 포인터를 또한 보유한다.
추적 기입 관리유닛(640)은 VTB(670)에의 추적 정보의 기입 프로세스를 제어한다. 추적 정보는 3가지 가능한 모드들로 VTB(670)로부터 기입될 수 있다. 덮어쓰 기 모드에서 동작할 때, 추적 기입 어드레스는 시작 어드레스에 랩(wrap)하며, 추적 데이터는 이전의 데이터에 덮어쓰기한다. 이러한 추적모드는 브레이크포인트 혹은 에러 포인트에 이르게 되는 추적 정보를 파악할 수 있게 한다. 1-어드레스 모드에서 동작할 때, 추적 정보는 단일 프로그램 가능한 어드레스 기입된다. 이것은 직렬 인터페이스 유닛과 같은 주변 디바이스에 추적 정보를 기입하는 것을 허용한다. 추적 이벤트 요청모드에서 동작할 때 VTB(670)내 정보는 일단 VTB(670)가 채워지면 주기적으로 읽혀질 수도 있을 것이다. DPU(500)는 예를 들면 DMA에 의해 VTB(670)의 판독동작을 활성화하는 인터럽트를 발생할 수 있다. 추적 정보는 DPU에 의해 생성된 추적 정보(이를테면 6개의 레지스터들(611-616)의 내용값)와, EOnCE 유닛에 의해 생성된 추적 정보와, 압축된 EOnCE 유닛에 의해 생성된 추적 정보를 포함할 수 있다. 제1 및 제2 스위치들(650, 670)은 어떤 정보를 출력할 것인가를 선택하기 위한 제어정보를 수신한다. 본 발명의 실시예에 따라서, 추적 정보는 조합 혹은 이들 정보를 포함할 수 있다. 본 발명의 또 다른 실시예에 따라서, NEXUS 블록(504)이 다른 추적 정보를 수신하는 반면 VTB(670)은 어떤 추적 정보를 수신할 수 있다. 이러한 분리는 이 기술에 공지된 단순한 로직 성분들에 의해 활용될 수 있다.
EOnCE 유닛에 의해 생성된 정보는 후술하는 압축방식이나 각종 공지된 압축방식들을 적용할 수 있는 압축유닛(655)에 의해 압축된다. 본 발명의 실시예에 따라서, 압축기는 EOnCE 유닛에 의해 생성된 추적 정보를 용장성 루프 정보를 제거함으로써 압축한다. 예를 들면, 추적 정보가 짧은 하드웨어 루프의 발생만을 반영한다면 단지 루프의 마지막 어드레스와 루프가 실행된 횟수가 기입된다. 추적 정보가 긴 하드웨어 혹은 소프트웨어 루프의 발생을 반영한다면 단지 루프의 마지막 어드레스 혹은 루프의 시작 어드레스 및 루프가 실행된 횟수가 기입된다. DPU는 짧은 루프 플래그에 의해 짧은 하드웨어 루프의 발생을 표시하고 긴 소프트웨어 혹은 하드웨어 루프의 발생은 긴 루프 플래그에 의해 표시된다.
TWB(160)은 8개의 256비트 엔트리들이다. TWB(160)가 완전히 채워졌을 때 DCU(150)에 고 우선도 버스 요청들을 보내며 그렇지 않다면 DCU(150)에 낮은 우선도 버스 요청들을 보낸다.
TWB(160)에 그리고 이어서 VTB(670)에 추적 정보의 흐름뿐만 아니라 VTB(670)에의 액세스는 추적할 정보의 량 및 유형을 판정하는 제어신호들에 의해 제어될 수 있다.
추적 정보는 복수의 추적 플래그들을 포함할 수 있다. 각 추적 플래그는 프로그램 어드레스와 같은 다른 추적 정보로서 해석될 수 없는 고유한 값을 갖는다. 더미 플래그(dummy flag)를 제외하고 추적 플래그들은 추적 정보의 유형을 나타낸다. 추적 플래그들은 사용자 태스크 플래그, 슈퍼바이저 태스크 플래그, 짧은 루프 플래그, 긴 루프 플래그, VTB 충만 플래그 및 더미 플래그를 포함한다. 2개의 태스크 플래그들로서 사용자 태스크 플래그와 슈퍼바이저 태스크 플래그가 있다. 이에 따라 태스크 플래그는 태스크의 특권 레벨을 반영한다. 사용자 태스크 플래그는 프로세스가 사용자 특권 레벨에서 동작하며 태스크 ID도 포함함을 나타낸다. 슈퍼바이저 태스크 플래그는 프로세서가 슈퍼바이저 특권 레벨에서 동작함을 나타낸다. VTB 더미 및 충만 플래그들은 TWB 패딩에 사용되고 추적 정보를 전달하지 않는다.
표 1은 본 발명의 실시예에 따른 플래그 포맷들을 나타낸 것이다. 비트0에 대한 X의 값은 이 플래그가 사용되는 맥락에 따라 이것이 0 혹은 1일 수 있음을 의미한다(표 2 참조).
표 1
플래그명 비트31-20 비트19-17 비트 16-1 비트0
사용자 태스크 플래그 DPU 베이스 어드레스 000 태스크 ID X
슈퍼바이저 태스크 플래그 DPU 베이스 어드레스 001 16'h0 X
짧은 루프 플래그 DPU 베이스 어드레스 010 16'h1 0
긴 루프 플래그 DPU 베이스 어드레스 010 16'h02 0
VTB 충만 플래그 DPU 베이스 어드레스 010 16'hFFFF 1
더미 플래그 DPU 베이스 어드레스 010 16'h0 0
DPU 베이스 어드레스는 프로그램 카운터 값으로서 해석될 수 없는 고유 어드레스이다. 태스크 전환이 발생할 때 제1 동작 모드에서 DPU(500)는 다음의 정보로서, 이전 태스크의 마지막 PC, 카운터들(611-616)의 값, 새로운 태스크의 제1 PC 및 새로운 태스크의 태스크 플래그를 저장할 수 있다. EOnCE 유닛(502)은 인터럽트들 및 RTE 명령들을 함께 추적하게 프로그램될 것이다. 태스크 플래그는 프로세서의 특권 레벨에 관한 표시를 포함한다.
제2 동작 모드에서 DPU(500)은 프로세서가 서브루틴 혹은 인터럽트 루틴으로 점프하거나 이로부터 리턴할 때 정보를 저장한다. 일단 이러한 이벤트가 발생하면 EOnCE 유닛(502)은 DPU(500)에 소스 PC 및 목적지 PC를 보낸다. 일단 이러한 쌍이 수신되면 DPU(500)는 다음의 정보 즉, 서브루틴 혹은 인터럽트 루틴으로 점프 혹은 이로부터 리턴하기 전의 마지막 PC, 카운터들(611-616)의 값, 흐름의 변화 후의 태스크 플래그와 제1 PC를 샘플링한다. EOnCE 유닛(502)은 다음의 흐름 명령들의 변화 즉, 인터럽트 루틴으로의 점프, 인터럽트 서비스 루틴으로부터의 리턴, 서브루 틴으로 점프 및 서브루틴으로부터의 리턴을 추적하게 프로그램된다.
제3 동작 모드에서 DPU(500)은 PD_TC(740) 내 SAMPLE 비트가 셋 되었을 때 다음의 정보 즉, 태스크 플래그, 카운터들(611-616)의 값, 및 각 추적 메시지의 크기가 256비트임을 보장하게 하는 더미 플래그를 저장한다. 일단 제1 정보 부분이 TWB(160)에 보내지면 SAMPLE 비트는 리셋된다.
제4 동작 모드에서 DPU(500)는 EOnCe의 어드레스 이벤트 검출채널 EDCA5가 이 유닛에 의해 검출된 임의의 종류의 브레이크포인트일 수도 있을 이벤트를 발생할 때 정보를 저장한다. 다음의 정보가 저장된다: 태스크 플래그, 카운터들(611-616)의 값 및 더미 플래그.
제5 동작 모드에서 데이터 레지스터(도 5에 DP_TD(750)으로 표기됨)에 기입 액세스가 실행되면, 이의 내용값이 WTB(160)에 기입된다.
추적 정보는 특정 포맷으로 TWB(160)에 기입된다. 추적 엔트리는 단일 추적 이벤트의 결과로서 발생되는 DPU(500)로부터의 기입들의 임의의 수이다. 추적 엔트리는 위에 언급된 플래그들 중 적어도 하나를 포함하며 편리하게 표 2에 나타낸 포맷을 갖는다. 당업자들은 다른 포맷들이 사용될 수 있음을 알 것이다.
표 2
추적 엔트리 포맷 L S B 플래그 값 추적모드들에서 사용
슈퍼바이저로 태스크 전환 엔트리 <소스 PC> 1 슈퍼바이저 태스크 플래그 압축모드
<플래그> 0
<목적지 PC> 0
사용자로 태스크 전환 엔트리 <소스 PC> 1 사용자 태스크 플래그 압축모드
<플래그> 0
<목적지 PC> 0
카운터 추적 엔트리, 태스크 전환 모드 <소스 PC> 1 (사용자 혹은 슈퍼바이저로의) 태스크 전환 엔트리와 동일 카운터 추적 모드
6 카운터들의 값들 0
<플래그> 0
<목적지 PC> 0
카운터 추적 엔트리, 인터럽트/서브루틴 모드 <소스 PC> 1 (목적지 PC의 특권 레벨에 따라, 사용자 혹은 슈퍼바이저로의) 태스크 전환 엔트리와 동일 카운터 추적 모드
6 카운터들의 값들 0
<플래그> 0
<목적지 PC> 0
카운터 추적 엔트리, 소프트웨어요청 혹은 EDCA5 이벤트 트리거 <플래그> 1 (사용자 혹은 슈퍼바이저로의) LSB 1 을 갖는 태스크 전환 엔트리와 동일 카운터 추적 모드
6 카운터들의 값들 0
짧은 루트 압축된 엔트리 <소스 PC> 1 짧은 루프 플래그 압축모드
<플래그> 0
<반복 카운트> 0
긴 혹은 소프트웨어 루프 압축 엔트리 <소스 PC> 1 긴 루프 플래그 압축모드
<목적지 PC> 0
<플래그> 0
<반복 카운트> 0
더미 추적 <플래그> 1 더미 플래그 모든 모드들
위에 언급된 포맷에 따라서, TWB(160)에 기입될 제1 추적 정보는 1의 LSB값과, 이어서 제로의 LSB값들에 의해 특징지워지는 추가 추적 정보에 의해 특징이 지워진다. 이것은 추적 정보의 분석(parsing)을 용이하게 한다.
DPU(500)은 복수의 제어 레지스터들을 포함한다. 대부분의 이들 제어 레지스터들은 카운터들 및 레지스터들 로직(610)에 속하나, 일부는 추적 기입 관리유닛(640)에 그리고 ID 비교 로직(645)에 속한다. 이들 레지스터들은 일반 제어 레지스터들, 카운터 제어 레지스터들 및 추적 버퍼 레지스터들을 포함한다.
추적 정보 로직(652)은 제1 전환 유닛(650)에 접속되어, EOnCE 유닛(502)으로부터 추적 정보를 수신하고, 이 정보의 적어도 일부를 미리 정의된(통상적으로 프로그램된) 값들과 비교하며, 상기 부분에 응답하여 하나 이상의 트리거 이벤트를 개시할 수 있다. 추적 정보 로직(652)은 하나 이상의 트리거 이벤트들의 발생에 관한 표시를 제공하기 위해 카운터들 및 레지스터들 로직(610)에 접속된다.
도 3은 본 발명의 실시예에 따른 다양한 일반 제어 레지스터들을 도시한 것이다. 일반 제어 레지스터들은 제어 레지스터(DP_CR)(700), 상태 레지스터(DP_SR)(702), 모니터 레지스터(DP_MR)(704), PID 검출 기준값 레지스터(DP_RPID)(706) 및 DID 검출 기준값 레지스터(DP_RDID)(78)를 포함한다.
제어 레지스터(DP_CR)(700)는 ID 비교 로직(645)에 의해 데이터 태스크 ID 및/또는 명령 태스크 ID를 고려하거나 이들 어느 것도 고려하지 않을지를 정의하는 2개의 ID 비교 비트들(TIDCM - 비트 29-28)를 포함한다.
일부 비트들(비트들 27-14)은 EOnCE에 의해 발생되는 각종 이벤트들(ISEDACA5 - ISEDACAO, 비트 27-16), EOnCE에 의해 발생되는 인터럽트 요청들(EIS, 비트 14)이 0, 1, 혹은 2개의 인터럽트 요청들을 프로그램 인터럽트 제어기(PIC)(도시생략)에 야기할 수 있는지를 나타낸다. DP_CR(70)의 나머지 비트들(비 트 13-0)은 카운터에 의해 발생된 이벤트들(DECB2- DECAO, 비트 11-0) 혹은 추적에 관계된 이벤트들(DETB, 비트 13- 12)에 응답하여, 인터럽트 요청이 PIC에 보내지는지 아니면 EOnCE 유닛(402)에의 디버그 요청에 보내질 것인지를 나타낸다.
상태 레지스터(DP_SR)(702)는 VTB(670)에 도달되지 않은 TWB(160) 내에 어떤 추적 정보가 있는지를 나타내는 추적 버퍼 활성비트(TWBA, 비트 6), 및 각각의 카운터가 활성화 혹은 비활성화되었는지를 각각이 나타내는 6개의 카운터 인에이블 비트(ENCB2 - ENCAO, 비트 5-0)를 포함한다.
모니터 레지스터(DP_MR)(704)는 TWB(160)가 충만되었음을 나타내는 추적 버퍼 충만 비트(TBF, 비트 9), 및 현존하는 디버스 요청 혹은 인터럽트에 대한 이유를 나타내는 복수의 비트들(DRA, DRN, DRTB, DRCB2- DRCAO)을 포함한다. 상기 이유는 외부 디버그 요청, NEXUS 디버그 요청, 추적 이벤트, 혹은 6 카운터들 중 하나에 연관된 이벤트일 수 있다.
PID 검출 기준값 레지스터(DP_RPID)(706)는 ID 비교 로직(645)에 의해 비교될 8비트 기준 프로그램 ID 값(RPID, 비트 7-0)을 포함한다.
DID 검출 기준값 레지스터(DP_RDID)(708)는 ID 비교 로직(645)에 의해 비교할 8비트 기준 데이터 ID 값(RDID, 비트 7-0)를 포함한다.
도 4는 본 발명의 실시예에 따른 일부 카운터 제어 레지스터들을 도시한 것이다. 카운터 제어 레지스터들은 제1 카운터 세트 레지스터(DP_TAC)(710), 제2 카운터 세트 레지스터(DP_TBC)(712), 제1 내지 제6 카운터 제어 레지스터들(DP_C1 - DP_C6)(714 - 724), 및 제1 내지 제6 카운터 값 레지스터들(DP_C1 - DP_C6)(726 - 736)을 포함한다.
제1 카운터 세트 레지스터(DP_TAC)(710)는 세트의 카운터들을 비활성화시킬 수 있는 선택적으로 요구되는 ID 값 외에도, 특권 레벨(사용자 혹은 슈퍼바이저)을 결정하는 셋 비활성화 모드 특권 레벨 비트(TDMP, 비트 29-28)를 포함한다. DP_TAC는 세트의 레지스터들의 비트들(TDM, 비트 27-24)을 비활성화시키며 특히 카운터 세트를 비활성화시킬 수 있는 이벤트에 어느 EDCA가 연관되는지를 특정하는 비트들을 더 포함한다. 앞에 언급된 비트들 외에도, DP_TAC는 카운터들을 활성화시킬 수 있는 이벤트들(추적 이벤트들이라고도 함), 세트의 레지스터들의 비트들(TENM, 비트 19-16)을 활성화시키는 이벤트, 및 추적된 이벤트들을 포함하는 태스크들의 특권 레벨을 정의하는 카운트된 이벤트 그룹 특권 레벨 비트(CEGP, 비트 13-12)의 특권 레벨을 정의하는 레지스터 세트 모드 특권 비트들(TENMP, 비트 21-20)을 또한 포함한다. 이들 비트들 다음에는, 추적 이벤트들의 어떤 세트가 카운트되고 있는지를 나타내는 카운터 이벤트 그룹 비트들(CEG, 비트 8-4), 단발 카운팅 모드에서 혹은 추적모드에서 세트의 카운터들이 동작할지를 정의하는 카운터 세트 모드 레지스터 비트들(CMODE, 비트 2-1), 및 마지막으로 레지스터들이 개별적으로 제어되거나 세트 제어될 것인지를 판정하는 TCEN 비트(비트 0)이 온다.
제2 카운터 세트 레지스터(DP_TBC)(712)는 제1 카운터 세트 레지스터(710)와 동일하나, 제2 세트의 카운터들(616-616)을 제어한다. 6 카운터 제어 레지스터들(DP_C1 - DP_C6)(714 - 724) 각각은 카운터 세트 레지스터(DP_TAC)와 유사하나, 세트의 레지스터들이 아니라 단일 카운터를 제어한다. 최하위 비트는 비활성화된 다.
6 카운터 값 레지스터들(DP_C1 - DP_C6)(726 - 736) 각각은 초기 카운트 값 및 활성화 후에 진행중의 카운트 값으로서 작용하는 6 카운터들 각각의 31비트 카운터 값을 보유한다.
도 5는 각종의 추적 유닛 레지스터들로서, 이를테면 추적 제어 레지스터(DP_TC)(740), VTB 시작 어드레스 레지스터(DP_TSA)(742), VTB 종료 어드레스 레지스터(DP_TSA)(744), 추적 이벤트 요청 레지스터(DP_TER)(746), 추적 기입 포인터 레지스터(DP_TW)(748), 및 추적 데이터 레지스터(DP TD)(750)를 도시한 것이다.
추적 제어 레지스터(DP_TC)(740)는 VTB 기입 액세스의 특권을 나타내는 특권 비트(PROV, 비트 21)를 포함한다. DP_TC(740)는 전역 동작 속성(GLOBAL, 비트 20-19), VTB(670)에의 기입 동작의 버스트 크기(통상적으로 하나, 혹은 2개 혹은 4개 혹은 8개의 BDU들)를 나타내는 버스트 크기 비트(BURST-SIZE, 비트 17-16), 및 모든 추적 정보가 VTB(670)에 도달되었음을 검증하기 위해서 TWB(160)의 내용을 충만시킬 수 있게 하기 위한 임시 비활성 비트들(TMDIS, 비트 12)을 또한 포함한다. DP_TC(740)는 추적 정보가 덮어쓰기 모드, 1 어드레스 모드 또는 추적 이벤트 요청모드에서 기입될 것인지를 나타내는 가상 추적 버퍼 기입모드 비트들(VTBWM, 비트 9-8)을 더 포함한다. 이들 비트들 다음에는, VTB 비트에의 샘플 카운터 값(SAMPLE, 비트 6), 및 출력중의 추적 정보로서 이를테면 EOnCE에 의해 발생된 추적 정보, 압축된 EOnCe에 의해 발생된 추적 정보( 및 부가된 태스크 플래그들), 추가 추적 정보와 함께 6 카운터들의 값들을 나타내는 추적 모드 비트들(TMODE, 비트 4-1)이 온 다. DP_TC(740)의 최하위 비트는 추적이 활성화되었는지를 나타내는 활성화 비트(EN)이다.
VTB 시작 어드레스 레지스터(DP_TSA)(742)는 가상 추적 버퍼(760)의 시작의 32비트 물리 어드레스를 저장한다. VTB 종료 어드레스 레지스터(DP_TSA)(744)는 가상 추적 버퍼(760)의 종료의 32비트 물리 어드레스를 저장한다.
추적 이벤트 요청 레지스터(DP_TER)(746)는 인터럽트 혹은 디버그 요청이 발생하게 되는 VTB(670) 내에 32비트 어드레스를 저장한다. 이 어드레스는 DPU(500)가 추적 이벤트 요청 이벤트 모드로서 동작할 때 기입된다. 추적 기입 포인터 레지스터(DP_TW)(748)는 현 추적 정보가 기입중인 VTB(670) 엔트리에 32-포인터를 저장한다. 추적 데이터 레지스터(DP_TD)(750)는 어떤 동작모드에서 VTB(670)에 기입할 데이터를 저장한다.
편리상, 한 세트의 카운터들은 한 세트의 이벤트들을 추적하기 위해 셋될 수 있다. 표 3은 3개의 레지스터들의 이용하여 추적되는 각종 세트들의 이벤트들을 예시한 것이다.
표 3
이벤트명 세트 제1 카운터에 의해 카운트된 이벤트 제2 카운터에 의해 카운트된 이벤트 제3 카운터에 의해 카운트된 이벤트
명령캐시 히트-미스 명령캐시 미스 이벤트들 명령캐시 히트 이벤트들 명령캐시 프리페치 히트 이벤트들
데이터 캐시 히트-미스 데이터 캐시 미스 이벤트들 데이터 캐시 히트 이벤트들 데이터 캐시 프리페치 히트 이벤트들
데이터 캐시 트래시 캐시 미스 이벤트들에 기인한 데이터 캐시 트래시들 스윕핑에 기인한 데이터 캐시 X
프로세서 스톨 레이트, 대기 클럭 사이클들 처리 상태 사이클 대기 프로세서 스톨 사이클들
프로세서 스톨 기본 분할 명령캐시에 기인한 프로세서 스톨 사이클 데이터 캐시에 기인한 프로세서 스톨 사이클 하이레벨 메모리 모듈에 기인한 프로세서 스톨 사이클
명령캐시에 기인한 프로세서 스톨 명령캐시에 캐시가능 미스 액세스들에 기인한 프로세서 스톨 사이클 명령캐시에 비-캐시가능 미스 액세스들에 기인한 프로세서 스톨 사이클 명령 캐시 경합에 기인한 프로세서 스톨 사이클
데이터 캐시에 기인한 프로세서 스톨 명령캐시에 캐시가능 미스 액세스들에 기인한 프로세서 스톨 사이클 명령캐시에 비-캐시가능 미스 액세스들에 기인한 프로세서 스톨 사이클 데이터 캐시 경합에 기인한 프로세서 스톨 사이클
프로세서 프로세서 스톨 프로세서 프로세서
이벤트명 세트 제1 카운터에 의해 카운트된 이벤트 제2 카운터에 의해 카운트된 이벤트 제3 카운터에 의해 카운트된 이벤트
버퍼를 통한 캐시 기입에 기인한 스톨 버퍼를 통한 캐시 기입에 있어 경합에 기인한 사이클들 버퍼를 통한 캐시 기입의 충분에 기인한 스톨 사이클들 순차적 기입 정체에 기이한 스톨 사이클들
하이레벨 메모리 모듈(HLMM)에 기인한 프로세서 스톨 HLMM에서의 경합들에 기인한 프로세서 스톨 사이클들 프로그램-데이터 경합들에 기인한 프로세서 스톨 사이클들 데이터-데이터 경합들에 기인한 프로세서 스톨 사이클들
인터페이스 명령 버스 로드 클럭 사이클들 버스가 서비스 대기중일 때 클럭 버스가 비지상태일 때 클럭
인터페이스 데이터 버스 로드 클럭 사이클들 버스가 서비스 대기중일 때 클럭 버스가 비지상태일 때 클럭
VTB에의 기입에 기인한 인터페이스 데이터 버스 로드 클럭 사이클들 VTB에의 기입에 기인하여 버스가 서비스를 대기중일 때 클럭 VTB에의 기입에 기인하여 버스가 비지상태일 때 클럭
VTB 기입 프로세서 스톨 클럭 사이클들 VTB에의 기입에 기인한 프로세서 스톨 사이클들 프로세서 스톨 사이클들
DMA 인터페이스 록 스톨 레이트 클럭 사이클들 DMA 인터페이스 록에의 기입에 기인한 프로세서 스톨 사이클들 프로세서 스톨 사이클들
도 6은 본 발명의 실시예에 따라, 비-개입적 추적을 위한 방법(800)의 흐름도이다. 방법(800)은 선택된 이벤트들을 복수의 카운터들에 의해 카운트하는 단계(810)에 의해 시작한다.
도 2에 개시된 예를 참조하면, 카운터들 및 레지스터들 로직(610)은 카운팅 레지스터들(611-616)에 의해 어떤 추적 이벤트들이 카운트될 것인지를 판정한다. 판정은 개별적으로 각 카운터의 제어를 용이하게 하거나 한 세트의 이벤트들을 기초로 제어를 용이하게 할 수 있는 각종 제어 레지스터들의 내용값에 반응한다.
제어 레지스터들은 예비 구성 단계(805) 동안 구성될 수 있다. 박스(810)로부터 자신으로의 화살표는 방법(800)이 단계들(820, 830)로 진행하는 중에 이벤트의 카운팅이 진행함을 나타낸다.
방법(800)은 비-개입적으로, 미리 정의된 트리거 이벤트들에 응답하여 복수의 카운터 값들을 검색하도록 복수의 카운터들을 샘플링하는 단계(820)를 더 포함한다. 도 2에 개시된 예를 참조하면, 새도우 레지스터들(621-626)은 트리거 이벤트들을 수신시 카운터들(611-616)의 내용값을 샘플하도록 구성되어 있다. 트리거 이벤트들은 특히 각종 제어 레지스터들을 사용하여 미리 정의되어 있다. 각 새도우 레지스터는 다른 새도우 레지스터들과는 무관하게 샘플링 동작을 수행할 수 있다.
단계(820)에 이어 단계(830)에서 추적 정보로서 복수의 카운터들을 출력한다. 이전 도면들에 개시된 예를 참조하면, 인터페이스(645)는 다양한 방식으로 추적 정보를 출력할 수 있다.
도 7은 본 발명의 실시예에 따른 방법(900)의 흐름도이다.
방법(900)은 단계(810, 820)가 후속되는 단계(805)에 의해 시작한다.
이들 단계들에 병행하여 방법(900)은 이를테면 EOnCE에 의해 발생된 추적 정보와 같은 추가의 추적 정보를 수신하는 단계(910)를 포함한다. 단계(910)에 이어 단계(920, 925)가 이어진다. 단계(920)는 이 추적 정보를 압축하는 단계를 포함한다. 단계(625)는 EOnCE에 의해 발생된 압축된 혹은 비압축된 추적 정보에 데이터 ID 혹은 정보 ID일 수 있는 ID를 연관시키는 단계를 포함한다.
단계(925, 820)에 이서 단계(860)에서 추적 정보로서 어떤 정보가 출력될 것인지를 선택한다. 이것은 2개의 추적 정보 유형들 중 단지 하나일 수 있고, 혹은 이들의 조합될 수 있다. 편리상, 압축된 추적 정보를 출력하기로 선택하면 카운터들의 값들이 아닌 태스크 ID 정보만이 부가될 수 있다. 단계(860)에 이어 단계(960)에서 추적 정보를 출력한다. 이것은 TWB(160)을 통해 VTB(670)에 정보를 기입하는 것, 및/또는 NEXUS 인터페이스(675)를 통해 NEXUS 블록(504)에 정보의 적어도 일부를 기입하는 것을 포함할 수 있다.
여기 기술된 것의 변형, 수정 및 그 외 구현들은 청구된 본 발명의 정신 및 범위 내에서 당업자들에게 일어날 것이다. 따라서, 본 발명은 앞의 예시적 설명에 의해서가 아니라 다음의 청구항들의 정신 및 범위에 의해 정의된다.

Claims (29)

  1. 비-개입적 추적(non-intrusive tracing)을 위한 장치에 있어서,
    복수의 선택된 이벤트들을 카운트하도록 동작 가능한 복수의 카운터들;
    상기 복수의 카운터들에 결합되며, 트리거 이벤트들에 응답하여 복수의 카운터들의 값들을 제공하기 위해 심리스 방식(seamless manner)으로 상기 복수의 카운터들을 샘플링하는 복수의 새도우 레지스터들;
    상기 복수의 카운터들 및 상기 복수의 새도우 레지스터들에 결합되며, 상기 복수의 카운터들 및 복수의 새도우 레지스터들의 동작을 제어하도록 동작 가능한 카운터들 및 레지스터들 로직; 및
    상기 복수의 새도우 레지스터들에 결합되며, (i) 상기 복수의 카운터들 값들을 수신하고 적어도 하나의 프로그램 카운터 값을 포함하는 추가의 추적 정보를 수신하며, (ii) 상기 복수의 카운터들의 값들과 상기 추가의 추적 정보 중 적어도 하나를 출력하도록 구성되는 추적 로직을 포함하는, 비-개입 추적을 위한 장치.
  2. 제1항에 있어서, 가상 추적 버퍼에 추적 정보의 기입 프로세스를 제어하도록 구성된 추적 기입 관리 유닛을 더 포함하는, 비-개입 추적을 위한 장치.
  3. 제2항에 있어서, 추적 정보를 수신하고 상기 가상 추적버퍼에 상기 추적 정보를 제공하는 추적 기입 버퍼를 더 포함하는, 비-개입 추적을 위한 장치.
  4. 제1항에 있어서, 추적 정보를 압축하도록 구성되는 압축기(compressor)를 더 포함하는, 비-개입 추적을 위한 장치.
  5. 제4항에 있어서, 상기 압축기는 루프의 발생을 나타내는 추적 정보를 제거함으로써 추적 정보를 압축하도록 구성되는, 비-개입 추적을 위한 장치.
  6. 제5항에 있어서, 상기 압축기는 루프 플래그(loop flag)를 제공함으로써 루프의 발생의 표시, 루프 반복들의 횟수를 반영하는 표시 및 루프 어드레스를 제공하도록 구성된, 비-개입 추적을 위한 장치.
  7. 제1항에 있어서, 상기 복수의 카운터들은 카운터 세트들에 배치되고, 상기 카운터들 및 레지스터들 로직은 이벤트들의 세트를 추적하기 위해 레지스터들의 세트를 프로그램하도록 동작 가능한, 비-개입 추적을 위한 장치.
  8. 제1항에 있어서, 이벤트들에 응답하여 인터럽트들을 개시하도록 또한 구성되는, 비-개입 추적을 위한 장치.
  9. 제1항에 있어서, 하이레벨 추적 정보 성분(504)에 추적 정보를 제공하도록 또한 구성된, 비-개입 추적을 위한 장치.
  10. 제1항에 있어서, 적어도 하나의 트리거 이벤트는 미리 정의된 추가의 추적 정보의 수신인, 비-개입 추적을 위한 장치.
  11. 제1항에 있어서, 적어도 하나의 트리거 이벤트는 흐름 이벤트(flow event)의 변화인, 비-개입 추적을 위한 장치.
  12. 제1항에 있어서, 적어도 하나의 트리거 이벤트는 추적된 프로세서의 특권 레벨(privilege level)의 변화인, 비-개입 추적을 위한 장치.
  13. 비-개입적 추적을 위한 방법에 있어서,
    복수의 카운터들에 의해 선택된 이벤트들을 카운트하는 단계;
    미리 정의된 트리거 이벤트들에 응답하여 복수의 카운터 값들을 검색하도록 상기 복수의 카운터들을 샘플링하는 단계;
    적어도 하나의 프로그램 카운터 값을 포함하는 추가의 추적 정보를 수신하는 단계; 및
    상기 복수의 카운터들의 값들 및 상기 추가의 추적 정보 중 적어도 하나를 추적 정보로서 출력하는 단계를 포함하는, 비-개입적 추적을 위한 방법.
  14. 제13항에 있어서, 가상 추적버퍼에 추적 정보를 기입하는 단계를 더 포함하 는, 비-개입적 추적을 위한 방법.
  15. 제13항에 있어서, 압축된 추적 정보를 제공하기 위해 상기 추가의 추적 정보를 압축하는 단계를 더 포함하는, 비-개입적 추적을 위한 방법.
  16. 제15항에 있어서, 상기 압축하는 단계는 루프의 발생을 나타내는 추적 정보를 제거하는 단계를 포함하는, 비-개입적 추적을 위한 방법.
  17. 제15항에 있어서, 상기 압축하는 단계는 루프 플래그를 포함하는 루프의 발생의 표시, 루프 반복 횟수를 반영하는 표시 및 루프 어드레스를 생성하는, 비-개입적 추적을 위한 방법.
  18. 제13항에 있어서, 이벤트들의 세트를 카운트하도록 카운터들의 세트를 구성하는 예비단계를 더 포함하는, 비-개입적 추적을 위한 방법.
  19. 제13항에 있어서, 적어도 한 트리거 이벤트는 미리 정의된 추가의 추적 정보의 수신인, 비-개입적 추적을 위한 방법.
  20. 제13항에 있어서, 적어도 하나의 트리거 이벤트는 흐름 이벤트의 변화인, 비-개입적 추적을 위한 방법.
  21. 제13항에 있어서, 적어도 하나의 트리거 이벤트는 추적된 프로세서의 특권 레벨의 변화인, 비-개입적 추적을 위한 방법.
  22. 제1항에 있어서, 상기 추가의 추적 정보는 프로세서 특권 레벨 표시를 더 포함하는, 비-개입적 추적을 위한 장치.
  23. 제13항에 있어서, 상기 추가의 추적 정보는 프로세서 특권 레벨 표시를 더 포함하는, 비-개입적 추적을 위한 방법.
  24. 제13항에 있어서, 상기 추적 데이터는 추적 플래그들을 포함하는, 비-개입적 추적을 위한 방법.
  25. 제24항에 있어서, 상기 추적 플래그들은 태스크 플래그, 슈퍼바이저 태스크 플래그, 짧은 루프 플래그, 긴 루프 플래그, 및 VTB 충만 플래그(VTB full flag)로 구성된 그룹에서 선택되는, 비-개입적 추적을 위한 방법.
  26. 제1항에 있어서, 상기 출력 추적 데이터는 추적 플래그들을 포함하는, 비-개입적 추적을 위한 방법.
  27. 제26항에 있어서, 상기 추적 플래그들은 태스크 플래그, 슈퍼바이저 태스크 플래그, 짧은 루프 플래그, 긴 루프 플래그, 및 VTB 충만 플래그로 구성된 그룹에서 선택되는, 비-개입적 추적을 위한 방법.
  28. 비-개입적 추적을 위한 장치에 있어서,
    복수의 선택된 이벤트들을 카운트하도록 동작 가능한 복수의 카운터들;
    상기 복수의 카운터들에 결합되며, 트리거 이벤트들에 응답하여 복수의 카운터들의 값들을 제공하도록 심리스 방식으로 상기 복수의 카운터들을 샘플링하는 복수의 새도우 레지스터들;
    상기 복수의 카운터들 및 상기 복수의 새도우 레지스터들에 결합되며, 상기 복수의 카운터들 및 복수의 새도우 레지스터들의 동작을 제어하도록 동작 가능한 카운터들 및 레지스터들 로직(610); 및
    상기 복수의 새도우 레지스터들에 결합되며, 상기 복수의 카운터들의 값들 중 적어도 하나를 출력하도록 구성된 추적 로직을 포함하는, 비-개입적 추적을 위한 장치.
  29. 비-개입적 추적을 위한 방법에 있어서,
    복수의 카운터들에 의해 선택된 이벤트들을 카운트하는 단계;
    미리 정의된 트리거 이벤트들에 응답하여 복수의 카운터 값들을 검색하도록 복수의 카운터들을 샘플링하는 단계; 및
    상기 복수의 카운터들의 값들을 추적 정보로서 출력하는 단계(830)를 포함하는, 비-개입적 추적을 위한 방법.
KR1020077008499A 2004-09-14 2005-09-13 비-개입적 추적 방법 및 장치 KR20070057944A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/940,252 US7249288B2 (en) 2004-09-14 2004-09-14 Method and apparatus for non-intrusive tracing
US10/940,252 2004-09-14

Publications (1)

Publication Number Publication Date
KR20070057944A true KR20070057944A (ko) 2007-06-07

Family

ID=36060406

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077008499A KR20070057944A (ko) 2004-09-14 2005-09-13 비-개입적 추적 방법 및 장치

Country Status (7)

Country Link
US (1) US7249288B2 (ko)
EP (1) EP1805615A4 (ko)
JP (1) JP2008513875A (ko)
KR (1) KR20070057944A (ko)
CN (1) CN100524231C (ko)
TW (1) TW200625071A (ko)
WO (1) WO2006030381A2 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500152B2 (en) * 2003-12-05 2009-03-03 Freescale Semiconductor, Inc. Apparatus and method for time ordering events in a system having multiple time domains
US7249288B2 (en) * 2004-09-14 2007-07-24 Freescale Semiconductor, Inc. Method and apparatus for non-intrusive tracing
US20060129999A1 (en) * 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
US7752016B2 (en) * 2005-01-11 2010-07-06 Hewlett-Packard Development Company, L.P. System and method for data analysis
US7809991B2 (en) * 2005-01-11 2010-10-05 Hewlett-Packard Development Company, L.P. System and method to qualify data capture
US7237149B2 (en) * 2005-02-25 2007-06-26 Freescale Semiconductor, Inc. Method and apparatus for qualifying debug operation using source information
US7523359B2 (en) * 2005-03-31 2009-04-21 International Business Machines Corporation Apparatus, system, and method for facilitating monitoring and responding to error events
US7650539B2 (en) * 2005-06-30 2010-01-19 Microsoft Corporation Observing debug counter values during system operation
US20080282263A1 (en) * 2005-12-30 2008-11-13 Qingjian Song Virtual Event Interface to Support Platform-Wide Performance Optimization
US7877734B2 (en) * 2006-01-12 2011-01-25 International Business Machines Corporation Selective profiling of program code executing in a runtime environment
US7673187B2 (en) * 2006-10-24 2010-03-02 Arm Limited Data processing apparatus and method for reducing trace bandwidth
US7975182B2 (en) * 2008-02-25 2011-07-05 International Business Machines Corporation Method, system and computer program product for generating trace data
US20090222797A1 (en) * 2008-02-29 2009-09-03 Infineon Technologies Ag Apparatus and method for providing a trigger
US9058421B2 (en) * 2009-06-16 2015-06-16 Freescale Semiconductor, Inc. Trace correlation for profiling subroutines
US8880958B2 (en) * 2011-09-20 2014-11-04 Qualcomm Incorporated Interleaved architecture tracing and microarchitecture tracing
KR20140066914A (ko) * 2012-11-23 2014-06-03 삼성전자주식회사 퍼포먼스 측정 유닛, 이를 포함하는 프로세서 코어 및 프로세스 프로파일링 방법
US9411741B2 (en) 2013-07-29 2016-08-09 Wipro Limited System and method for application level caching
US9766997B2 (en) 2016-01-29 2017-09-19 Intel Corporation Monitoring performance of a processor using reloadable performance counters
US11074155B2 (en) * 2019-04-04 2021-07-27 International Business Machines Corporation Generating representative microbenchmarks
CN110456765B (zh) * 2019-07-29 2020-12-25 北京威努特技术有限公司 工控指令的时序模型生成方法、装置及其检测方法、装置
WO2023287708A1 (en) * 2021-07-13 2023-01-19 SiFive, Inc. Processor crash analysis using register sampling

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0535889A (ja) * 1991-07-30 1993-02-12 Nec Corp マイクロプロセツサ回路
JPH11102310A (ja) * 1997-09-25 1999-04-13 Nec Kofu Ltd プログラムトレーサおよびトレースデータ圧縮記録方法
US6134676A (en) 1998-04-30 2000-10-17 International Business Machines Corporation Programmable hardware event monitoring method
JP2000057013A (ja) * 1998-08-13 2000-02-25 Nec Corp トレース情報採取装置及びプログラムを記録した機械読み取り可能な記録媒体
US6253338B1 (en) 1998-12-21 2001-06-26 International Business Machines Corporation System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block
US6598150B2 (en) 1999-02-26 2003-07-22 Arm Limited Asynchronously accessing the program counter values of a data processing system by applying an independent clock on the latching and scan-chain circuits
US6684348B1 (en) * 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US6615370B1 (en) 1999-10-01 2003-09-02 Hitachi, Ltd. Circuit for storing trace information
US6732307B1 (en) * 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
US6769076B1 (en) * 2000-02-07 2004-07-27 Freescale Semiconductor, Inc. Real-time processor debug system
JP2001350648A (ja) * 2000-06-08 2001-12-21 Hitachi Ltd マイクロコンピュータ
US7007205B1 (en) * 2001-02-15 2006-02-28 Silicon Graphics, Inc. Method and apparatus for recording trace data in a microprocessor based integrated circuit
GB2380827A (en) * 2001-10-12 2003-04-16 Siroyan Ltd Debugging of processors using two separate event detectors
US6691207B2 (en) * 2001-12-28 2004-02-10 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing loop compression in a program counter trace
US7249288B2 (en) * 2004-09-14 2007-07-24 Freescale Semiconductor, Inc. Method and apparatus for non-intrusive tracing

Also Published As

Publication number Publication date
WO2006030381A2 (en) 2006-03-23
US7249288B2 (en) 2007-07-24
JP2008513875A (ja) 2008-05-01
TW200625071A (en) 2006-07-16
US20060069952A1 (en) 2006-03-30
EP1805615A2 (en) 2007-07-11
EP1805615A4 (en) 2011-03-09
CN101040263A (zh) 2007-09-19
WO2006030381A3 (en) 2006-08-24
CN100524231C (zh) 2009-08-05

Similar Documents

Publication Publication Date Title
KR20070057944A (ko) 비-개입적 추적 방법 및 장치
JP4225851B2 (ja) データ処理装置用トレース要素生成システム
US6009270A (en) Trace synchronization in a processor
EP0762280B1 (en) Data processor with built-in emulation circuit
US7197671B2 (en) Generation of trace elements within a data processing apparatus
US5964893A (en) Data processing system for performing a trace function and method therefor
EP0762279B1 (en) Data processor with built-in emulation circuit
TWI235912B (en) Performance monitor system and method suitable for use in an integrated circuit
US10140216B2 (en) Measuring address translation latency
JPS6010358A (ja) 内部分散型システム計測監視装置
US20040250164A1 (en) Configurable real-time trace port for embedded processors
US8037363B2 (en) Generation of trace elements within a data processing apparatus
US5289587A (en) Apparatus for and method of providing the program counter of a microprocessor external to the device
US20060294343A1 (en) Realtime compression of microprocessor execution history
US7007205B1 (en) Method and apparatus for recording trace data in a microprocessor based integrated circuit
EP2171588A1 (en) Processor performance monitoring
US8539209B2 (en) Microprocessor that performs a two-pass breakpoint check for a cache line-crossing load/store operation
US6513134B1 (en) System and method for tracing program execution within a superscalar processor
Milenkovic et al. Caches and predictors for real-time, unobtrusive, and cost-effective program tracing in embedded systems
KR20200088760A (ko) 체크섬 생성
JPH09218801A (ja) データプロセッサ
JP6041749B2 (ja) トレース収集回路及びトレース収集方法
US20090249045A1 (en) Apparatus and method for condensing trace information in a multi-processor system
US20050120348A1 (en) Method of determining information about the processes which run in a program-controlled unit during the execution of a program by the program-controlled unit
Uzelac Algorithms and hardware structures for real-time compression of program traces

Legal Events

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