KR20090091170A - 개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀 - Google Patents

개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀 Download PDF

Info

Publication number
KR20090091170A
KR20090091170A KR1020097012388A KR20097012388A KR20090091170A KR 20090091170 A KR20090091170 A KR 20090091170A KR 1020097012388 A KR1020097012388 A KR 1020097012388A KR 20097012388 A KR20097012388 A KR 20097012388A KR 20090091170 A KR20090091170 A KR 20090091170A
Authority
KR
South Korea
Prior art keywords
debugging
digital signal
signal processor
response
processor
Prior art date
Application number
KR1020097012388A
Other languages
English (en)
Other versions
KR101078934B1 (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 KR20090091170A publication Critical patent/KR20090091170A/ko
Application granted granted Critical
Publication of KR101078934B1 publication Critical patent/KR101078934B1/ko

Links

Images

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • 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

Landscapes

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

Abstract

본 발명은 통신(예를 들어, CDMA) 시스템에서 전송들의 처리를 포함하는(그러나 이에 제한되지 않는), 디지털 신호 프로세서의 설계 및 사용을 위한 기술들에 관한 것이다. 본 방법 및 시스템은 소프트웨어 실행에 관련한 실시간 정보를 포착함으로써 소프트웨어 명령 디버깅 동작을 개선하고, 코어 프로세서 sodpj 코어 프로세서 프로세스를 동작시키기 위한 명령들 및 회로를 포함한다. 비-간섭적 디버깅 프로세스가 디지털 신호 프로세서 내에서 동작한다. 소프투웨어 실행의 미리 결정된 양상들을 비-제한적으로 실시간 모니터링 하는 것은 코어 처리 프로세서에 의해 이루어지며, 상기 프로세서 상에서 실시간으로 발생한다. 임베디드 트레이스 매크로셀은 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들을 기록하고 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들 내에서 발생하는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성한다. 본 발명은 적어도 하나의 브레이크포인트에 대한 응답으로 비-간섭적 디버깅 프로세스의 양상들을 제어한다.

Description

개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀{EMBEDDED TRACE MACROCELL FOR ENHANCED DIGITAL SIGNAL PROCESSOR DEBUGGING OPERATIONS}
본 발명은 데이터 통신들 및 유사 어플리케이션들에서의 사용을 발견할 수 있는, 통신 처리 시스템들 및 프로세스들에 관한 것이다. 더 구체적으로, 본 발명은 개선 디버깅 동작들에 대한 임베디드 트레이스 매크로셀의 제공 및 사용을 포함하는, 디지털 신호 처리 디버깅 동작들을 위한 신규하고 개선된 방법 및 시스템에 관한 것이다.
본 출원은 다음 공동 계류중인 미국 특허 출원들, "NON-INTRUSIVE, THREAD-SELECTIVE, DEBUGGING METHOD AND SYSTEM FOR A MULTI-THREADED DIGITAL SIGNAL PROCESSOR"라는 명칭의 2006년 11월 15일 출원된 출원 번호__________(출원인 관리번호 060135U1); "METHOD AND SYSTEM FOR A DIGITAL SIGNAL PROCESSOR DEBUGGING DURING POWER TRANSITIONS"라는 명칭의 2006년 11월 15일에 출원된 출원 번호(출원인 관리번호 060135U2); "METHOD AND SYSTEM FOR TRUSTED/UNTRUSTED DIGITAL SIGNAL PROCESSOR DEBUGGING OPERATIONS"라는 명칭의 2006년 11월 15일에 출원된 미국 특허 출원 번호__________(출원인 관리번호 060135U3); 및 "METHOD AND SYSTEM FOR INSTRUCTION STUFFING OPERATIONS DURING NON-INTRUSIVE DIGITAL SIGNAL PROCESSOR DEBUGGING"이라는 명칭의 2006년 11월 15일에 출원된 미국 특허 출원 번호 __________(출원인 관리번호 060135U5)와 관련된다.
비디오, 복합 오디오, 화상회의 및 다른 풍부한 소프트웨어 어플리케이션들을 지원하는 원격통신 및 다른 타입들의 전자 장비는 신호 처리를 점점 더 많이 포함한다. 신호 처리는 복잡하지만 반복적인 알고리즘으로 빠른 수학적 계산 및 복잡한 데이터 생성을 요구한다. 많은 어플리케이션들은 실시간 계산들을 요구하는데, 다시 말해, 신호는 시간의 연속 함수이며, 수치 처리를 위해 샘플링되어 디지털 신호들로 변환되어야 한다. 프로세서는 상기 샘플들이 도달할 때 상기 샘플들에 대한 이산 계산들을 수행하는 알고리즘들을 실행해야 한다.
디지털 신호 프로세서(DSP)의 아키텍쳐는 이러한 알고리즘들을 처리하도록 최적화된다. 좋은 신호 처리 엔진의 특성들은 고속이고 플렉시블한 산술 계산 유닛들, 상기 계산 유닛들로 그리고 상기 계산 유닛들로부터의 비제한적인 데이터 흐름, 상기 계산 유닛들에서의 확장된 정확도 및 동적 범위, 듀얼 어드레스 생성 기술들, 효율적인 프로그램 시퀀싱, 및 프로그래밍의 용이성(ease)을 포함한다.
DSP 기술의 한가지 전망 있는 어플리케이션은 위성 또는 지상 링크를 통해 사용자들 간의 음성 또는 데이터 통신 뿐만 아니라 텍스트 메시징 및 다른 어플리케이션들을 지원하는 코드 분할 다중 액세스 (CDMA) 시스템과 같은 통신 시스템들을 포함한다. 다중 액세스 통신 시스템에서의 CDMA 기술들의 사용은 "SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS"라는 명칭의 미국 특허 제 4,901,307호, 및 "SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM"라는 명칭의 미국 특허 제 5,103,459 호에서 개시되며, 이들 모두는 본 발명의 양수인에게 양도된다.
CDMA 시스템은 통상적으로 하나 이상의 표준들에 따르도록 설계된다. 한가지 이러한 제 1 세대 표준은 이하에서 IS-95 표준이라 지칭되는 TIA/EIA/IS-95 Terminal-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System"이다. IS-95 CDMA 시스템들은 음성 데이터 및 패킷 데이터를 전송할 수 있다. 더 새로운 세대 표준은 "제3세대 파트너쉽 프로젝트"(3GPP)라는 명칭의 컨소시엄에 의해 제공되며 공개적으로 쉽게 사용가능한 문헌 번호 3G TS 25.211, 3G TS 25.212, 3G TS 25.213, 및 3G TS 25.214를 포함하는 일련의 문헌들에 포함된다. 3GPP 표준은 이하에서 W-CDMA 표준으로서 지칭된다.
예를 들어, W-CDMA 표준을 사용하는 복잡한 DSP 동작 소프트웨어는 로버스트(robust)한 개발 툴들을 요구한다. 이러한 개발 툴들은 코드 생성, 통합, 테스트, 디버깅 및 평가 어플리케이션 성능들을 위한 툴들을 포함할 수 있다. 고급 원격통신 어플리케이션들과 같은 복잡한 DSP 어플리케이션들 또는 소프트웨어의 개발 및 동작에 있어서, 정교하지만, 비-간섭적인 디버깅 소프트웨어에 대한 필요성이 존재한다. 즉, 디버깅 소프트웨어 어플리케이션들은 소프트웨어 결함들 및 동작상의 문제점들의 정정을 모니터링하고, 테스트하고, 지원하기에 충분히 로버스트해야 할 뿐만 아니라, 디버깅 동작들 동안 코어 프로세서 소프트웨어를 간섭하지 않도록 동작할 수 있다. 그렇지 않은 경우, 코어 처리 소프트웨어에서의 임의의 문제점들 이, 이러한 디버깅 소프트웨어의 사용동안 적절히 검출되지 않을 수도 또는 검출될 수도 있다.
디버깅 동작들 동안, 연관된 프로세서를 위한 트레이싱 장비들을 실행하는 비-간섭적 소프트웨어 디버깅 프로세스의 연관에 대한 필요성이 존재한다. 이러한 시스템은 이러한 시스템이 특정 이벤트 전후에 포착되는 것을 허용하기 위해 상기 프로세서의 상태에 대한 정보를 제공할 수 있다. 동시에, 이러한 특징들은 DSP가 최고 속도로 동작한다 할지라도 상기 프로세서의 성능에 임의의 상당한 부담을 부가할 수 없다. 비-간섭적 디버깅 동작들과 관련하여, 이러한 프로세스는, 예를 들어, 조건들의 특정 시퀀스 이후에, 포착 선택 트레이스 정보에 대한 소프트웨어에서의 구성을 제공할 수 있다. 이러한 모니터링 및 레코딩 메커니즘은 또한 다양한 타입들의 구성 및 브레이크포인트 결정들 및 허가들을 허용하기 위한 멀티-스레드 프로세서에서 스레드-선택가능 동작들을 위한 비-간섭적 디버깅 프로세스와 관련하여 동작할 수 있다.
또한, DSP 실행 흐름에 관한 상세 정보를 실시간으로 포착할 수 있는 비-간섭적 디버깅 시스템 및 비-간섭적 방식으로 이와 같이 수행할 추가 필요성이 존재한다.
비-간섭적 디버깅 메커니즘과 관련한 동작을 위한 레코딩 시스템 및 소프트웨어 실행 모니터링에 대한 추가적인 필요성이 존재하는데, 상기 디버깅 메커니즘 자체는 DSP 코어 내의 관심 있는 하나 이상의 영역들에 트레이스 정보의 생성의 제한 및 포커싱을 제공한다.
추가적으로, 소프트웨어 실행 및 모니터링 프로세스 및 시스템의 동작에 응답할 수 있는 비-간섭적 디버깅 시스템에 대한 필요성이 존재한다. 소프트웨어 실행 모니터링 및 레코딩 시스템의 동작에서의 트랜지션 또는 개시에 대해 디버깅 시스템 자체를 개시하는 방법에 대한 필요성이 명확하게 존재한다. 따라서, 이러한 특징은 소프트웨어 실행 모니터링 및 레코딩 시스템과의 이러한 가깝고 동작상 상조적으로(synergistic) 동작하는 연관된 비-간섭적 디버깅 시스템에 의해 제공될 수 있다.
멀티-스레드 디지털 신호 프로세서를 포함하는, 디지털 신호 프로세서를 위한 비-간섭적, 스레드-선택적 디버깅 방법을 제공하기 위한 기술들이 개시되며, 상기 기술들은 코어 프로세서 동작들에서의 특정 모니터링된 이벤트들에 대한 응답으로 디버싱 동작들을 개시하기 위해 임베디드 트레이스(embeded trace) 매크로셀과 협력한다. 여기서 개시된 상기 방법 및 시스템은, 개인용 컴퓨터들, PDA들, 무선 핸드셋들 및 유사 디바이스들에서 동작하는 어플리케이션들, 및 관련 디지털 프로세서 속도 및 서비스 품질을 증가시키는, 점점 더 강력한 소프트웨어 어플리케이션들을 위해 디지털 신호 프로세서의 동작 및 상기 디지털 신호 프로세서 명령들의 효율적 사용 모두를 개선시킨다.
본 발명의 일 양상에 따라, 프로세서에서의 소프트웨어 실행 흐름에 관한 실시간 정보를 포착함으로써 소프트웨어 명령 디버깅 동작들을 개선하기 위한 방법 및 시스템이 제공된다. 상기 방법 및 시스템은 디지털 신호 프로세서와 연관된 코어 프로세서 내에서 코어 프로세서 프로세스를 동작시키기 위한 명령들 및 회로를 포함한다. 본 발명은 디지털 신호 프로세서의 디버깅 메커니즘 내에서 비-간섭적 디버깅 프로세스를 동작시킨다. 코어 처리 프로세스와 연관된, 그리고 상기 프로세서에서 실시간으로 발생하는 소프트웨어 실행의 미리 결정된 양상들을 실시간으로 비-간섭적으로 모니터링 하는 것은 임베디드 트레이스 매크로셀을 사용한다. 상기 임베디드 트레이스 매크로셀은 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들을 레코딩하고 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들 내에서 발생하는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성한다. 본 발명은 적어도 하나의 브레이크포인트에 대한 응답으로 비-간섭적 디버깅 프로세스의 양상들을 제어한다. 그 결과, 본 발명은 멀티-스레드 디지털 신호 프로세서의 최대 모든 스레드들에 대한 타이밍 및 멀티-스레드 트레이스 명령 시퀀싱을 위한 비-간섭적 디버깅 프로세스와 협력한다.
본 발명의 이들 및 다른 이점들 및 부가적인 신규한 특징들은 여기에 제공된 설명으로부터 명백할 것이다. 이 요약의 목적은 본 발명의 광범위한 기술이 아니라, 본 발명의 기능들 중 몇몇의 짧은 개요를 제공하는 것이다. 여기에 제공된 다른 시스템들, 방법들 및 이점들은 후속하는 도면들 및 상세한 설명의 검토시 당업자에게 명백해질 것이다. 모든 이러한 부가적인 시스템들, 방법들, 특징들 및 이점들은 이러한 설명 내에 포함되며, 첨부되는 청구항들의 범위 내에 있는 것으로 의도된다.
본 발명의 특징들, 속성, 및 이점들은 도면들과 관련하여 취해지는 경우 아래에 설명된 상세한 설명으로부터 더 명백해질 수 있으며, 상기 도면들에서 유사 참조 번호는 도면 전체에 걸쳐 대응적으로 식별된다.
도 1은 여기서 개시된 다양한 실시예들 중 한 실시예를 구현할 수 있는 통신 시스템의 간략화된 블록도이다.
도 2는 본 발명의 실시예의 교지를 수행하기 위한 DSP 아키텍처를 예시한다.
도 3은 본 발명의 기술적 이점을 통합하는 멀티-스레드 디지털 신호 프로세서의 일 실시예의 아키텍처 블록도를 제공한다.
도 4는 본 발명의 ISDB/JTAG 인터페이스 특징들을 적용하는 디지털 신호 프로세서 코어의 특정 양상들을 개시한다.
도 5는 본 발명이 관련한 디버깅 동작 모드를 포함하는, 디지털 신호 프로세서의 동작 모드에 적용가능한 프로세스 흐름도를 제공한다.
도 6은 본 발명의 일 실시예에 적용가능한 브레이크포인트 처리 방식을 도시한다.
도 7은 여기서 개시된 디버깅 프로시저들을 수행하기 위한 ISDB JTAGSync 회로의 양상을 도시한다.
도 8은 본 발명의 임베디드 트레이스 매크로셀의 전체 기능도를 도시하는 블록도를 제공한다.
도 9는 개시된 임베디드 트레이스 매크로셀 프로세스 및 시스템의 트리거 블 록도를 도시한다.
도 10은 개시된 임베디드 트레이스 매크로셀의 동작에서 유용한 스레드 매칭 회로의 일 실시예를 예시한다.
도 11은 다양한 트레이싱 및 시퀀싱을 수행하기 위해 본 발명과 연관하여 동작 가능한 시퀀서 및 트리거 블록 회로를 도시한다.
도 12 및 13은 본 발명의 시퀀싱 및 더 복잡한 동작들에 적용간으한 조건들 및 레지스터들의 표를 제공한다.
멀티-스레드 디지털 신호 프로세서를 위한 비-간섭적, 스레드-선택적 디버깅 방법 및 시스템에 관한 본 발명은 여기에 제시된 이점들이 유리할 수 있는 임의의 타입의 멀티-스레드 처리를 위한 어플리케이션을 가진다. 한 가지 이러한 어플리케이션은 원격통신, 특히 하나 이상의 디지털 신호 처리 회로를 사용하는 무선 핸드셋에서 나타난다. 이러한 무선 핸드셋이 어떻게 사용될 수 있는지를 설명하기 위해, 도 1은 개시된 인터럽트 처리 방법 및 시스템의 제시된 실시예들을 구현할 수 있는 통신 시스템(10)의 간략화된 블록도를 제공한다. 송신기 유닛(12)에서, 데이터는, 데이터 소스(14)로부터, 상기 데이터를 포맷하고, 코딩하고, 처리하여 하나 이상의 아날로그 신호들을 생성하는 전송(TX) 데이터 프로세서(16)로, 통상적으로 블록으로 전송된다. 이후, 상기 아날로그 신호들은, 기저대역 신호들을 변조하고, 필터링하고, 증폭하고, 상향변환하여 변조 신호를 생성하는 송신기(TMTR ; 18)에 제공된다. 상기 변조 신호는 이후 하나 이상의 수신기 유닛들로 안테나(20) 를 통해 전송된다.
수신기 유닛(22)에서, 상기 전송된 신호가 안테나(24)에 의해 수신되고, 수신기(RCVR; 26)로 제공된다. 수신기(26) 내에서, 상기 수신된 신호는 증폭되고, 필터링되고, 하향변환되고, 복조되고, 디지털화되어 동상(in phase) (I) 및 (Q) 샘플들을 생성한다. 이후, 상기 샘플들은 수신(RX) 데이터 프로세서(28)에 의해 디코딩되고 처리되어 전송된 데이터를 복원한다. 수신기 유닛(22)에서의 디코딩 및 처리는 송신기 유닛(12)에서 수행되는 코딩 및 처리와 상보적인 방식으로 수행된다. 이후 복원된 데이터는 데이터 싱크(30)에 제공된다.
위에서 설명된 신호 처리는 음성, 비디오, 패킷 데이터, 메시징의 전송 및 다른 타입들의 통신을 단방향으로 지원한다. 양방향 통신 시스템들은 양방향 데이터 전송을 지원한다. 그러나, 다른 방향에 대한 신호 처리는 간략화를 위해 도 1에는 도시되지 않는다. 통신 시스템(10)은 코드 분할 다중 액세스(CDMA) 시스템, 시분할 다중 액세스(TDMA) 통신 시스템(예를 들어, GSM 시스템), 주파수 분할 다중 액세스(FDMA) 통신 시스템, 또는 지상 링크를 통해 사용자 간의 음성 및 데이터 통신을 지원하는 다른 다중 액세스 통신 시스템일 수 있다. 특정 실시예에서, 통신 시스템(10)은 W-CDMA 표준에 따른 CDMA 시스템이다.
도 2는 도 1의 전송 데이터 프로세서(16) 및 수신 데이터 프로세서(28)로서 동작할 수 있는 DSP(40) 아키텍처를 예시한다. 여기서 제공된 교지들 및 개념들을 효율적으로 사용할 수 있는 매우 많은 가능한 디지털 신호 프로세서 실시예들 중 오직 하나의 실시예만을 나타내는 DSP(40)만이 강조된다. 따라서, DSP(40)에서, 스레드들(T0:T5)(참조 번호 42 내지 52)은 서로 다른 스레드들로부터의 명령들의 세트들을 포함한다. 회로(54)는 명령 액세스 매커니즘을 나타내며, 스레드들(T0:T5)에 대한 인출(fetch) 명령들을 위해 사용된다. 회로(54)에 대한 명령들은 명령 큐(56)로 큐잉된다. 명령 큐(56) 내의 명령들은 프로세서 파이프라인(66)(이하 참조)으로 제공될 준비가 된다(아래 참조). 명령 큐(56)로부터, 단일 스레드, 예컨대 스레드 TO는 생성 논리 회로(58)에 의해 선택될 수 있다. 선택된 스레드의 레지스터 파일(60)이 판독되고, 판독된 데이터는 SLOTO :SLOT3에 대한 실행 데이터 경로(62)로 전송된다. 이 예에서 SLOT0:SLOT3은 본 실시예에서 사용되는 패킷 그룹화 결합을 위해 제공한다.
실행 데이터 경로들(62)로부터의 출력은, DSP(40)의 연산들로부터의 결과를 리턴시키기 위해, 개별 스레드들 T0:T5을 또한 수용하도록 구성되는 레지스터 파일 기록 회로(64)로 이동한다. 따라서, 회로(54)로부터 레지스터 파일 기록 회로(64)로 이동하기 전까지의 데이터 경로가 처리 파이프라인(66)을 형성한다. 본 실시예는 최대 6개의 스레드들 T0:T5와 함께 단일 프로세서를 사용하는 이종 엘리먼트 프로세서(HEP) 시스템을 사용할 수 있다. 프로세서 파이프라인(66)은 회로(54)로부터 레지스터들(60 및 64)로 데이터 항목을 인출하기 위해 필요한 최소 개수의 프로세서 사이클들에 부합하는 6개 스테이지들을 가진다. DSP(40)는 프로세서 파이프라인(66) 내에서 서로 다른 스레드들 T0:T5의 명령들을 동시에 실행한다. 즉, DSP(40)는 6개의 독립 프로그램 카운터들, 프로세서 파이프라인(66) 내의 스레드들 T0:T5의 명령들을 구별하기 위한 내부 태깅(tagging) 메커니즘 및 스레드 스위치를 트리거링하는 메커니즘을 제공한다. 스레드-스위치 오버헤드는 제로에서 오직 수 개의 사이클들로 변한다.
따라서, DSP(40)는 광범위한 신호, 이미지, 및 비디오 처리 어플리케이션들을 통해 고성능 및 저전력으로 설계된 범용 디지털 신호 프로세서를 제공한다. 도 3은 본 발명의 한 가지 명확화를 위해 관련된 명령 세트 아키텍쳐의 몇몇 양상들을 포함하여, DSP(40) 아키텍처의 간략한 개요를 제공한다. DSP(40) 아키텍처의 구현예들은 인터리빙된 멀티스레딩(IMT)을 지원한다. 이러한 실행 모델에 있어서, 하드웨어는 파이프라인에서 서로 다른 스레드들로부터의 명령들을 인터리빙함으로써, 다수의 하드웨어 스레드들 T0:T5의 동시 실행을 지원한다. 이러한 특징은 DSP(40)가 전체 클록 주파수를 포함하면서 높은 코어 및 메모리 사용을 여전히 유지하도록 한다. IMT는 비순차적(out-of-order) 실행, 확장형 포워딩 네트워크 등과 같은 비싼 보상 메커니즘에 대한 필요 없이 높은 스루풋을 제공한다. 또한, DSP(40)는 " Variable Interleaved Multithreaded Processor Method and System " 및 " Method and System for Variable Thread Allocation and Switching in a Multithreaded Processor "라는 명칭으로 M. Ahmed 등에 의해 공동-양도된 미국 특허 출원들에 변형들 및 신규한 방식들과 같은, IMT의 변형들을 포함할 수 있다.
특히, 도 3은 본 발명의 교지를 사용할 수 있는 단일 스레드에 적용된 바와 같은 DSP(40)의 코어 처리 아키텍쳐(70) 블록도를 제공한다. 블록도(70)는 AXI 버스(74)로부터 버스 인터페이스(I/F; 73)를 통해 명령들을 수신하는 공유 명령 캐시(72)를 도시하며, 상기 명령들은 믹싱된 16-비트 및 32-비트 명령들을 포함한다. 이들 명령들은 시퀀서(sequencer; 76), 사용자 제어 레지스터(78), 및 스레드 T0:T5의 감독자 제어 레지스터(80)에 도달한다. 본 발명의 코어-레벨 시스템 아키텍처는 또한 인-실리콘 디버깅 시스템(ISDB; 82)을 포함하며, 상기 ISDB는 코어 JTAG 인터페이스(84)를 통해 코어 프로세서(70)와 인터페이스하는데, 이들은 아래에 더 상세히 설명된다.
시퀀서(76)는 하이브리드 양방향 수퍼스칼라 명령들 및 4 방향 VLIW 명령들을 S-파이프 유닛(86), M-파이프 유닛(88), LD[로드]-파이프(90), 및 LD/ST[저장]-파이프(92)에 제공하며, 이들 모두는 범용 레지스터들(94)과 통신한다. AXI 버스(74)는 또한 버스 I/F(73)를 경유하여 공유 데이터 캐시(96)를 사용하여 LD/ST 명령들을 스레드들 T0:T5로 전달한다. 선택적 L2 캐시/TCM(98) 신호들은 공유 데이터 TCM(100)과 함께 LD/ST 명령들을 포함하는데, LD/ST 명령들은 또한 스레드 범용 레지스터들(94)로 흐른다. AHB 주변 버스(102)로부터 MSM 특정 제어기(104)는 인터럽트 제어기 명령들, 디버깅 명령들, 및 타이밍 명령들을 포함하며, T0:T5와의 인터럽트들을 전달한다. 글로벌 제어 레지스터들(106)은 스레드들 T0:T5과 제어 레지스터 명령들을 통신한다.
따라서, DSP(40)는 6개의 가상 DSP 코어들을 포함하는데, 각각은 글로벌 제어 레지스터들(106) 및 개별 감독자 제어 레지스터들(80)을 포함한다. 글로벌 제어 레지스터들(106)은 모든 스레드들 사이에서 공유된다. 각각의 스레드는 공통 데이터 캐시 및 공통 명령 캐시를 공유한다. 로드, 저장 및 인출 동작들은 공통 버스 인터페이스에 의해 서비스된다. 고성능 AXI 버스(74) 및 더 낮은 성능의 AHB 버스(102)는 데이터 및 명령 트래픽을 오프-코어 메모리 및 주변 장치들에 연결하는데 사용된다. 통합된 레벨의 2개 메모리(캐시 및/또는 TCM) 입력(98)은 선택적이다. 주변 액세스는 메모리-매핑된 로드들 및 저장소들을 통할 수 있다. AHB 및 AXI 사이의 물리적 어드레스 분할(partition)은 MSM 레벨에서 구성될 수 있다.
명확하게는, DSP(40)에 대해 제공된 아키텍처는 시간 경과에 따라 발전되거나 변경될 수 있다. 예를 들어, DSP(40)가 사용할 수 있는 명령 캐시들의 개수는 6개에서 1개로, 또는 캐시들의 다른 개수로 변경될 수 있다. 수퍼스칼라 디스패치, TCM(100)에서 L1 데이터, 및 다른 아키텍처상의 양상들은 변경될 수 있다. 그러나, 본 발명은 DSP(40)의 수정들의 큰 계열들에 대해, 그리고 광범위한 구성들에 있어서 지속적인 연관성을 가질 수 있다.
ISDB(82) 내지 JTAG 인터페이스(84)는 DSP(40)에 대한 하드웨어 디버거를 제공한다. ISDB(82)는 매 스레드 기반으로 감독자 제어 레지스터들(80)로, 그리고 분할되는 시스템 또는 감독자-전용 레지스터들 및 모든 스레드들 사이에서 글로벌 제어 레지스터들(106)을 공유함으로써 JTAG 인터페이스(84)를 통해 소프트웨어 디버그 특징들을 제공한다. 시스템 제어 레지스터들은 스레드 인터럽트 및 예외(exception) 제어를 위해, 그리고 매 스레드 메모리 관리 액티비티들을 위해 사용된다. 글로벌 레지트터들은 디버깅 동작 동안 ISDB(82)와의 상호작용을 허용한다.
ISDB(82)는 소프트웨어 개발자들이 DSP(40)이 동작하는 동안 자신들의 소프트웨어를 디버깅할 수 있게 한다. ISDB(82)에서 동작하는 소프트웨어 디버거 프로 그램과 공동으로, ISDB(82) 하드웨어는 시스템 소프트웨어를 동작시키는 DSP(40)를 디버깅하는데 사용될 수 있다. ISDB(82)는 개별적으로 하드웨어 스레드들의 디버깅을 지원한다. 사용자들은 스레드 실행, 스레드 레지스터들의 관찰 및 변형, 명령 및 데이터 메모리의 관찰 및 변경, 단일 스텝 스레드들의 관찰 및 변형, 스레드들에 대한 스터프(stuff) 명령들을 중지시키고 스레드 실행을 재개할 수 있다. 신뢰받은 사용자들은 ISDB(82) 특징들 모두에 대한 액세스 권한을 가지지만 신뢰받지 않은 사용자들은 특징들의 서브세트에 대한 액세스 권한을 가진다.
ISDB(82)는 프로그램 카운터에 있는 소프트웨어를 디버깅하는 ISDB(82)와의 통신을 위해 디버거 인터페이스 카드와 인터페이스할 수 있지만, 이들 모두는 JTAG 인터페이스(84)를 통과한다. 호스트 디버거 소프트웨어는 ISDB 제어 레지스터들을 판독하고 기록함으로써 ISDB(82)와 상호작용할 수 있다. 예를 들어, 통신은 판독/기록이 발생할 ISDB 레지스터를 식별하는 40-비트 패킷 및 32-비트 데이터 페이로드를 통과해서 이뤄진다. 이러한 동작을 지원하는 패킷 포맷은 각각이 32비트 폭일 수 있는 최대 64개의 제어 레지스터들일 수 있다.
ISDB(82)는 디버깅 동작 동안 보안을 통제하기 위한 신뢰할만한 레지스터를 포함한다. 신뢰할만한 ISDB(82)가 설정되면, 모든 ISDB(82) 레지스터들은 디버거 소프트웨어에 대해 보여질 수 있으며, 모든 ISDB 코맨드들이 사용가능하다. 신뢰받은 ISDB가 제거되는 경우, ISDB(82)만이 동작들의 제한된 세트를 허용한다. 본 발명의 이들 양상들은 아래에 더 상세히 나타난다.
특정 ISDB(82) 레지스터들은 코어 소프트웨어에 대해 가시적(visible)으로 될 수도 있다. 이들은 SUPERVISOR(감독자) 모드 제어 레지스터 전달 명령들을 통해 액세스 가능하다. 코어 명령들은 브레이크포인트 명령을 포함한다. 신뢰받은 ISDB가 설정되는 경우, 이 명령은 스레드의 실행이 디버깅 동작 모드(150)로 진입하도록 한다. 이 트랜지션은 스레드 제어를 ISDB(82)로 시프트시킨다. 브레이크포인트를 실행한 스레드 뿐만 아니라, 다른 스레드들이 ISDB(82) 프로그래밍에 따라 디버그 모드(150)로 선택적으로 진입할 수 있다. ISDB(82)가 신뢰받지 못하거나 인에이블되지 않는 경우, 이 명령은 NOP로서 처리된다. 바람직하게는 브레이크포인트 명령은 오직 패킷 내의 명령이다.
도 4는 본 발명의 코어 프로세서 및 디버깅 메커니즘 간의 ISDB/JTAG 인터페이스(110)의 중요 양상들을 도시한다. DSP(40) 코어 아키텍쳐(70)에 관련하여, ISDB(82)는 ISDB JTAG 회로(114)로부터, 경로 JTAG 인터페이스 경로(112)를 통해 JTAG(84)와 통신한다. ISDB JTAG 회로(114)는 JTAG(84)와 ISDB(82) 간의 데이터 흐름들을 처리한다. ISDB JTAG 회로(114)는 추가적으로 ISDB JTAGSync 회로(116)와 인터페이스한다. ISDB JTAGSync 회로(116)는 추가적으로 ISDB 제어기(118), 명령 유닛(IU; 150) 및 제어 유닛(CU; 122)와 통신한다. 특히, ISDB JTAGSync 회로(116)는 IU(150)의 IU ISDB 논리 회로 및 CU(122)의 CU ISDB 제어기(126)와 인터페이스한다. CU ISDB 제어기(126)는 CU ISDB 논리 회로(128) 및 ISDB 제어기(118)와 통신한다. ISDB 제어기(118)로부터의 제어 출력들은 ISDB 데이터 출력(130), ISDB 리셋 신호(132), 및 ISDB 인터럽트(134)를 포함한다. ISDB 제어기(118)로의 추가적인 인터페이스들은 MCD 인터페이스(136) 및 ETM 브레이크포인트 트리거(138) 를 포함한다.
후속하는 ISDB(82)의 다양한 컴포넌트들의 열거는 DSP(40)의 동작과 관련한 비-간섭적 신뢰받은 및 신뢰받지 않은 디버깅 동작들의 실행을 위한 제어 또는 논리 회로의 구성 부분들에 대한 동작 설명 및 간략한 소개이다. ISDB 제어기는 (a) 다양한 ISDB 레지스터들의 구현; (b) MCD 외부 브레이크 및 재개 트리거 및 ETM 브레이크 트리거를, 추가적인 처리를 위해 이들이 CU(122)로 포워딩되기 전에 DSP(40)로 동기화; (c)코어의 디버그 모드 상태에 기초한 MCD 브레이크 및 재개 트리거들의 생성; 및 (d)예를 들어, ISDB 인터럽트, 브레이크포인트 이벤트 등과 같이 DSP(40) 서브 시스템에 송출된 신호들의 파이프라인 스테이지의 부가를 포함한, 다양한 작업들을 처리한다.
CU(122)는 예를 들어 (a) 브레이크포인트들의 처리 및 각각의 스레드에 대한 브레이크포인트 트리거들의 생성; (b) 마이크로-브레이크포인트 및 마이크로-재개 코맨드들의 생성; (c)ISDB(82) 상태 및 메일박스 레지스터들의 유지; 및 (d)특정 ISDVB(82) 레지스터들의 구현과 같은 작업들을 처리할 수 있는 회로 및 명령들을 포함한다. CU(122)는 아래 도 6에서 나타나는 바와 같이 모든 브레이크포인트들을 처리하고 CU ISDB 제어기(126)의 마이크로-코맨드 생성기에 대한 매크로 브레이크 요청을 생성하기 위한 브레이크포인트 처리 로직(BPL) 블록을 포함한다. 상기 마이크로 코맨드 생성기는 명령 스터프 코맨드들, 명령 단계 및 재개 코맨드들에 따라 상기 매크로 브레이크 요청을 처리하고, 파이프라인 제어를 위해 마이크로-브레이크포인트 및 재개 코맨드들을 CU(122)로 발행한다.
CU ISDB 제어기(128)는 역으로 수신된 브레이크포인트 및 재개 확인응답 신호들에 기초하여 ISDB(82)의 상태를 유지한다. CU ISDB 제어기(126)의 메일박스 기능들은 호스트 디버그 소프트웨어 및 DSP(40) 코어 프로세서 간의 통신을 위해 사용되는 메일박스 레지스터들을 유지한다. 이들 메일박스 기능들은 또한 ISDB(82) 상태 레지스터들을 유지한다.
도 5는 디버깅 프로세스들 동안 ISDB(82)의 동작들을 포함하는, DSP(40)의 다양한 모드 제어 양상들에 대한 처리 모드 다이어그램(140)을 나타낸다. 도 5에서, DSP(40)는 모든 스레드들에 대해 글로벌하면서 개별 스레드들에 대해 로컬인 처리 모드들을 지원한다. 각각의 DSP(40) 하드웨어 스레드는 2개의 실행 모드들인 사용자 모드(142) 및 감독자 모드(144), 및 3개의 비-처리 모드들인 대기 모드(146), 오프 모드(148), 및 디버그 모드(150)를 각각 지원하며, 이들 모두는 도 4에 나타난 바와 같을 수 있다. 스레드의 모드는 다른 스레드들과는 독립적일 수 있는데, 예를 들어, 하나의 스레드는 대기 모드(146)일 수 있는 반면 또다른 스레드는 사용자 모드(142)에 있는 등의 식이다.
도 5의 매-스레드(per-thread) 모드 상태도는 다양한 명령들 또는 이벤트들에 의해 지원된다. 이들은 "Except" 또는 내부 제외 이벤트, "Int" 또는 외부 인터럽트 이벤트, "RTE" 또는 제외 모드로부터의 소프트웨어 리턴 명령, 및 "SSR" 또는 SSR 레지스터 명령에 대한 업데이트, "Stop" 또는 임의의 모드로부터 진입될 수 있는 소프트웨어 중지 명령, "Start" 또는 역시 임의의 모드로부터 진입될 수 있는 소프트웨어 시작 명령, "trap" 또는 소프트웨어 트랩 명령, "Wait" 또는 소프트웨 어 대기 명령, "Resume" 또는 소프트웨어 재개 명령, "DE" 또는 디버그 이벤트, 및 "DR" 또는 디버그 명령을 포함한다. 본 발명의 서로 다른 구현예들에서의 기능들이 여기에 제공된 기능들로부터 약간씩 변경될 수 있지만, "Start," "Wait," "Resume," "DE," 및/또는 "DR"의 의미는 본 발명의 범위와 부합하는 가장 넓은 해석이 주어질 수 있다.
레지스터들은 사용자 모드(142) 및 감독자 모드(144)로 DSP(40)에서 사용가능하다. 사용자-모드 레지스터들은 범용 레지스터들의 세트 및 제어 레지스터들의 세트로 나뉘어진다. 범용 레지스터들은 어드레스 생성, 스칼라 및 벡터 연산을 포함한 모든 범용 계산을 위해 사용된다. 제어 레지스터들은 전용 기능들, 예를 들어 하드웨어 루프들, 예측들 등을 지원한다. 범용 레지스터들은 32비트 폭이며 단일 레지스터들로서 또는 두 개의 레지스터들의 정렬된 쌍으로서 액세스될 수 있다. 범용 레지스터 파일은 로드/저장을 위한 어드레스들, 수치 명령들을 위한 데이터 오퍼랜드들 및 벡터 명령들을 위한 벡터 오퍼랜드들을 포함하여, 명령들을 위한 모든 오퍼랜드들을 제공한다.
디버그 모드(150)는 스레드가 ISDB(82)로부터 코맨드들을 기다리는 특정 상태를 제공한다. 예를 들어, 소프트웨어 브레이크포인트 명령, ISDB(82)로부터의 브레이크포인트 코맨드의 실행, 또는 하드웨어 브레이크포인트의 발생에 의해, ISDB 디버그 이벤트가 발생할 때마다, 표시된 스레드들은 디버그 모드(150)로 진입할 수 있다. 디버그 모드(150)인 동안, 코어는 JTAG 인터페이스(84)로부터의 코맨드들을 통해 ISDB(82)에 의해 제어된다. ISDB(82)가 재개 코맨드의 실행으로 인해 스레드를 배포(release)하는 경우, 상기 스레드는 현재 모드 설정에 따라 동작을 재개할 수 있다. 스레드가 디버그 모드(150)인 경우, 상기 코어는 ISDB(82)에 의해 제어되고 다른 스레드들에 의해 제어될 수 없다. 실행 중인 스레드로부터의 대기, 재개, 시작, 또는 중지 명령, 디버그 모드(150)에서 스레드르르 타겟으로 하는 것은 무시될 수 있다. 유사하게, NMI(Non-Maskable Interrupt)는 디버그 모드(150)에서 스레드들에 의해 무시될 수 있다.
하드웨어 리셋 모드(도 5에 미도시) 및 디버그 모드(150)는 모든 스레드들에 대해 글로벌하다. 하드웨어 리셋 핀이 어써트(assert)될 때마다, 임의의 스레드의 처리 상태와는 무관하게, DSP(40)는 하드웨어 리셋 모드로 진입할 수 있다. 하드웨어 리셋 모드에서, 모든 레지스터들이 자신들의 리셋 값들로 설정된다. 하드웨어 리셋 핀이 디-어써트(de-assert)될 때까지 어떠한 처리도 발생하지 않을 수 있다. 리셋 핀이 어써트되는 경우, 프로세서는 리셋 모드로 트랜지션할 수 있고, 모든 레지스터들은 자신의 하드웨어 리셋 값들로 리셋될 수 있다. 리셋 핀이 디-어써트된 후, 스레드 TO에 소프트 리셋 인터럽트가 주어질 수 있다. 이것은 스레드 TO가 감독자 모드(144)로 진입하여 리셋 벡터 위치에서 실행을 시작하도록 야기할 수 있다. 모든 다른 스레드들은 오프 상태로 남아 있을 수 있다. 이 점에서, 소프트웨어는 개별적으로 각각의 스레드에 대한 모드 트랜지션들을 제어하는 것이 자유롭다.
도 6에서, CU ISDB 제어기(126)(도 4)의 BPL 회로(160)가 하드웨어 브레이크포인트들 0/1(HWBKPT0 162 및 HWBKPT1 164), 소프트웨어 브레이크포인트 (SWBKPT 166), JTAG 84 브레이크포인트(JTAGBKPT 168), ETM(임베디드 트레이스 매크로) 브레이크포인트(ETMBKPT 170), 및 외부 브레이크포인트(EXTBKPT 172)를 포함하는, 6개의 서로 다른 소스들로부터의 브레이크포인트 트리거들을 포함하는 것이 보여진다. 브레이크포인트 트리거(162 내지 172) 및 디버그 모드 상태 입력(174)은 DSP(40)가 디버그 모드(150)에서 동작하도록 하기 위해 브레이크포인트 인코더(176)를 인코딩하도록 간다. 인코더(176)로부터의 출력은 3개의 브레이크포인트 정보 비트(178) 및 브레이크포인트 유효 비트(180)를 포함한다. 브레이크포인트 정보 데이터(178)는 브레이크포인트 정보 JTAG 인터페이스 코맨드(184)을 야기하도록 브레이크포인트 정보 회로(182)로 들어간다. 브레이크포인트 비트(180)는 또한 OR 게이트 입력(186) 및 리셋 회로(188) 입력을 생성한다. 리셋 회로(188)는 UCG 재개 스레드 개수 또는 리셋 입력(192)을 수신하여 리셋 제어 출력(194)을 OR 게이트(196)로 생성한다. 유효 비트(186) 또는 리셋 출력(194)은 OR 게이트(196)로 하여금 BPL(160) 브레이크포인트 출력(198)을 생성하도록 할 수 있다.
BPL 회로(160)에서의 브레이크포인트 트리거들은 상기 스레드들 각각에 대한 매크로 브레이트 트리거를 생성하기 위해 대응하는 TNUM 마스크와 함께 처리된다. 매크로 브레이크포인트 트리거(198), bpl_breakTnum_ANY[5:0]은 대응하는 스레드가 재개될 때까지 유지된다. BPL(160)에서 사용될 수 있는 개수의 파이프라인 스테이지들은 정교한 브레이크포인트들인 하드웨어 브레이크포인트들에 의해 구동되는데, 즉, 하드웨어 브레이크포인트 매치를 트리거링하는 명령은 실행되지 않아야 한다. 상기 스레드는 상기 명령까지 상기 프로그램을 실행한 이후 디버그 모드로 전환한 다. 개시된 실시예는 브레이크포인트 트리거들이 도달한 이후 한 사이클을 매크로 브레이크포인트 트리거에 제공한다. 상기 이유로 인해, 브레이크 유효 입력(176)은 자신의 래치된 버전 입력(192)과 논리상으로 OR 처리되어 bpl_breakTnum_ANY 출력(198)을 생성한다.
브레이크포인트들의 사용을 통해, DSP(40)의 6개 스레드들의 사용은 개별적으로 디버그 모드(150)로 들어가고 빠져나올 수 있다. 브레이크포인트는 ISDB(82)에서 지원되는 5개의 서로 다른 타입들의 브레이크포인트들에 대응하는 5개 소스들로부터 올 수 있다. 브레이크포인트를 히트(hit)하면, 스레드는 자신의 현재 모드(예를 들어, 대기/실행)로부터 디버그 모드(150)로 트랜지션한다. 디버그 모드(150)에서, 스레드는 ISDB(82)로부터의 코맨드들을 기다린다. 오프 모드(118)에 있는 스레드는 파워다운되고 ISDB(82)로부터의 어떠한 명령들도 수용하지 않을 수 있다. 디버그 모드(150) 진입의 레이턴시는, 예를 들어 전력 차단 이벤트와 관련한 것으로서 본 발명에서 구현시 정의된다. 예를 들어, 일 구현예는 디버그 모드(150)로 진입하기 전에, 소정 동작을 완료하도록, 예를 들어 미해결된(outstanding) 로드 요청을 종료하도록 선택될 수 있다. 일 실시예에서, 스레드 식별자 레지스터는 8-비트 판독/기록 필드를 포함하며 소프트웨어 스레드 식별자를 유지하기 위해 사용된다. 이 필드는 브레이크포인트들을 매치시키기 위해 하드웨어 디버거에 의해 사용된다.
브레이크포인트 프로세스로 진입하기 위한 다수의 서로 다른 방법들이 존재한다. 예를 들어, HWBKPT(162) 및 HWBKPT(164) 브레이크포인트들에 대해, 레지스 터가 미리 결정된 값과 같은 경우, 프로그램 카운터(PC)가 미리 결정된 값을 매치시키는 경우, 이후 프로세스는 디버그 모드(150)로 간다. ASID(어드레스 공간 식별자들)들은 프로세스에서의 특정 ID들 또는 멀티스레드 프로세스에서의 특정 스레드 또는 프로세스의 프로세스 ID와 유사한 태그들이다. 따라서, 물리적 어드레스, 가상 어드레스, ASID, PC, 또는 다른 자격부여자들이 공간에서 프로그램의 위치의 고정을 선택적으로 획득하기 위해 사용될 수 있으며, 상기 공간에서 브레이크포인트가 발생할 수 있음을 지시한다. 여기서 참조되는 브레이크포인트들의 사용은 L. Codrescu 등에 의한 "NON-INTRUSIVE, THREAD-SELECTIVE, DEBUGGING METHOD AND SYSTEM FOR A MULTI-THREADED DIGITAL SIGNAL PROCESSOR"라는 명칭의 공동-양도된 미국 특허 출원에서 더 구체적으로 공개된다. 따라서 본 발명은 도 6에서와 같이 디버그 모드(150)로의 엔트리를 야기하는 브레이크포인트의 경우, 디버그 모드(150)로 이동하는 경로를 제공한다. 본 발명은 DSP(40) 내의 어느 스레드 또는 스레드들의 세트들이 디버그 모드(150)로 이동할지를 제어한다.
본 발명의 중요 사항은 DSP(40)의 임베디드 매크로셀(ETM) 유닛이며, 이는 소프트웨어 실행 흐름에 관한 상세 정보를 실시간으로 포착함으로써 코드의 사용자 디버깅을 향상시킨다. ETM은 선택된 DSP(40) 실행을 비-간섭적으로 모니터링하고 기록하고, 실행 정보를 패킷들로 형성하고 상기 패킷 스트림을 ETB로서 알려진 오프-칩 또는 온-칩 메모리에 전송한다. 상기 ETM은 또한 관심있는 영역으로의 트레이스 정보의 생성을 한정하거나 집중한다. 패킷 스트림을 사용하여, 사용자에게 코드의 런타임 동작의 가시성을 제공하는, 실행의 재구성이 이루어진다.
도 7은 다양한 임베디드 트레이스 매크로셀 기능과 관련하여 여기서 개시된 디버깅 프로시저들의 개시를 수행하기 위한 ISDB JTAGSync 회로의 일 양상을 도시한다. 여기서 개시된 신뢰받은 및 신뢰받지 못한 디버깅 동작들을 수행하기 위한 예시적인 회로를 나타내기 위해, 도 7은 ISDB JTAGSync 회로(200)를 포함한다. ISDB JTAGSync 회로(200)는 DSP(40)가 ISDB 제어 레지스터들을 판독 및 기록하기 위해 사용할 수 있는 ISDB 테스트 데이터 레지스터(202)를 포함한다. ISDB JTAGSync 회로(200)는 DB_tck 상에서 동작하는 ISDB 테스트 데이터 레지스터(202) 와 DSP(40) 클록 영역에서 동작하는 ISDB 제어 레지스터들(204) 간에 동기화 로직을 제공한다. ISDB 제어 레지스터들을 판독하고 기록함으로써, DSP(40)는 ISDB(82)에 의해 지원되는 다양한 디버그 작업들을 수행한다.
도 7의 구현에 있어서, ISDB JTAGSync 회로(200)는 ISDB 테스트 데이터 레지스터(204)로 JTAG_isdb_chain 신호(206)를 수신하여 JTAG_isdb_chain_out 신호(208)를 생성한다. ISDB 테스트 데이터 레지스터(202)는 판독/기록 (RAV) 비트 (210), 어드레스 비트 [6:0] (212) 및 데이터 비트 [31 :0] (214)를 포함한다. R/W 비트(210)의 값은, 싱크 회로(216) 출력 및 CU trustedDebug 입력(220)처럼, AND 게이트(216)로 간다. JTAG_isdb_chain_update tkl 신호 (222) 및 ISDB_CLK 신호(224)는 싱크 회로(218)의 동작을 제어한다. 어드레스 비트(212)로부터의 어드레스 정보는 어드레스 디코드 회로(220)에 의해 수신될 수 있으며, 이는 ISDB 레지스터들(204)에 제공된다. ISDB 레지스터들(204)은 AND 게이트(216)로부터의 기록_인에이블 신호(228)에 대한 응답으로 데이터 비트[31:0]로 데이터를 전달한다.
ETM은 DSP(40) 및 다른 유사 디지털 신호 프로세서를 위한 광범위한 디버그 및 트레이스 장비들을 제공한다. 이들은 프로세서의 상태에 대한 정보가 특정 이벤트 전후에 포착되도록 하면서, DSP(40)이 최고 속도로 동작함에 따른 프로세서 성능에 어떠한 부담도 부가하지 않는다. ETM은 조건들의 특정 시퀀스 이후에만 그리고 선택 트레이스 정보만을 포착하기 위해 소프트웨어에서 구성될 수 있다. 이후, 전용인 구성가능한 트레이스 포트 및 FIFO는 압축된 트레이스 데이터가 프로세서를 인터럽트하거나 영향을 주지 않고 외부 트레이스 포트 분석기에 의해 상기 칩으로부터 판독되도록 한다.
트레이스 포트는 1 에서 32비트 데이터 버스로부터, 코어 클록에 독립적인 트레이스 클록을 사용하여 구성될 수 있다. 예를 들어, ETM으로부터의 데이터 레이트는 코어 클록의 절반일 수 있으며, 데이터 대역폭을 유지하기 위해 핀들의 수가 증가한다. 유사하게, 핀들의 개수는 절반일 수 있으며, 데이터 레이트가 증가한다. ETM은 개발자가 다수의 비동기 코어들로부터 동시적인 상관된 트레이스를 볼 수 있도록 멀티-코어 환경 내에서 및 독립적으로 사용될 수 있다.
도 8은 여기서 제공된 전체 ETM(232) 기능들을 도시하는 블록도(230)를 제공한다. DSP(40) 코어 프로세서(70)는 ETM(232)과 인터페이스하는데, 상기 ETM(232)는 트리거링 및 필터링 회로(234) 및 압축 및 패킷화 회로(236)를 포함한다. 트리거링 및 필터링 회로(234) 및 압축 및 패킷화 회로(236)에 의한 처리에 후속하여, ETM 출력(238)은, 예를 들어, 임베디드 트레이스 버퍼(ETB) 회로 또는 오프-칩 회로일 수 있는, 트레이스 리포지터리(240)로 입력된다. 트레이스 리포지터리(240) 로부터, 소프트웨어 실행 레코드들은 출력 레코드들(242)로서 디버그 호스트 또는 ISDB(82)로 흐른다. ISDB(82)는 트레이스 리포지터리 출력 레코드(242)를 수신하고, 이로부터 재구성된 실행 흐름(246)을 생성하기 위한 압축해제기 컴포넌트(244)를 포함한다. ETM(232)는 ISDB(82)로부터의 데이터 및 명령들에 대한 응답으로 입력 JTAG(84)하는 JTAG(84)로부터의 제어 입력(248)을 수신한다.
도 8에 도시된 바와 같이, ETM(232)은 DSP(40) 파이프라인을 모니터링한다. 이 정보를 사용하여, ETM(232)은 두 개의 주요 기능들인 필터링/트리거링 및 압축/패킷화를 수행한다. 상기 필터링 및 트리거링 동작들은 JTAG 인터페이스(84)를 통해 사용자에 의해 프로그래밍되며, 트레이싱을 언제 턴 온 및 턴오프할 지를 정의하기 위해 사용된다. 압축/패킷화 유닛은 DSP(40) 실행 정보를 취하여 이를 트레이스 포트를 통해 ETM(232)으로부터 전송되는 패킷들로 효율적으로 형성한다. ETM(232)에서 나오는 트레이스-스트림은 트레이스 리포지터리(240)로 제공된다. 트레이스 리포지터리(240)는 트레이스 레코드들을 기록하기 위한 큰 메모리 용량을 제공하고 오프칩 또는 온칩일 수 있다. 온칩 리포지터리는 임베디드 트레이스 버퍼(ETB)로서 알려진다. 압축해제기 컴포넌트(244)는, 트레이스 리포지터리(240)로부터의 패킷 스트림을 취하는 ISDB(82) 상에서 실행되는 소프트웨어 컴포넌트이며, 프로그램 이미지와 함께, 사용자에게 DSP 파이프라인(66)으로의 상세화된 가시성을 제공하는, DSP(40)의 실행 흐름을 재구성한다. ETM(232)은 모든 6개 스레드들에 대한 명령 시퀀싱 및 타이밍, 및 프로파일링 카운트들(캐시 미스들, 뱅크 충돌, 및 마이크로-tlb 미스들)을 레코딩하고 전송하는 능력을 제공한다. ETM(232)은 PC 및 LDST 어드레스들상에서 및 LDST 데이터에 대해 트리거링할 수 있다. ETM(232)은 직렬(serial)인 외부 이벤트 검출들을 지원한다. 또한, ETM(232)은 ISDB 브레이크포인트 트리거 이벤트들, 외부 트리거 이벤트 및 DSP(40) 인터럽트들을 생성하는 능력을 가진다. 일 실시예에서, ETM(232)은 JTAG(84)를 통해 프로그램 가능하며, 512x32 비트의 전용 ETB 트레이스 리포지터리(240)를 지원할 수 있다. ETM(232)은 4-트리거 블록들(각각은 2개의 어드레스 및 1개의 데이터 비교기를 가짐)을 포함할 수 있고, 3-상태 시퀀서를 포함할 수 있다. ETM(232) 트레이싱은 보안 DSP(40) 인에이블 레지스터의 제어하에서 동작할 수 있으며, DSP(40) 전력 차단동안의 동작을 위해 프로그래밍될 수 있다.
ETM(232)은 시간상 소정 윈도우를 통해 스레드에 대한 프로그램 카운터의 풀 진행(full progression)의 레코딩으로서 명령 트레이스를 생성한다. 선택적으로, 프로그램 카운터 진행(즉, 중지(stall) 사이클들의 식별)의 타이밍 역시 명령 트레이스에 포함될 수 있다. 이벤트-자원 메커니즘들은 이들 명령 트레이스들을 언제 생성할지를 정의하기 위해 사용된다. 트리거 및 필터링 기능들은 이벤트-자원들의 프로그래밍을 통해 제어된다. 더 상세하게는, 이벤트-자원들은 필터링, 트리거링, 및 ISDB(82) 브레이크포인트 형성을 제어한다. 필터링은 명령 트레이스를 언제 인에이블하고 디스에이블할지를 결정하는 기능들을 포함한다. 트리거링은 언제 트리거 마커를 패킷 스트림으로 삽입할지를 결정하는 것을 포함한다. ISDB(82)는 ISDB(82)가 디버깅 동작들을 위해 브레이크포인트를 생성하고 이에 응답하는 조건들을 특정하는 것을 포함한다.
ETM(232)은 DSP(40) 내의 특정 조건들(예를 들어, 특정 PC가 실행되는지의 여부 또는 특정 메모리 위치가 판독되는지의 여부)이 언제 발생할지를 검출하기 위해 다수의 제 1(primary) 이벤트 자원들(예를 들어, 어드레스 및 데이터 비교기들)을 포함한다. 추가로, 더 복잡한 이벤트들의 정렬의 검출을 인에이블하는 제 2(secondary) 이벤트 자원들(트리거 블록들 및 시퀀서)이 존재한다.
ETB 트레이스 리포지터리(240)는 트레이스 정보가 디바이스의 핀들에서 트레이스를 통해 즉시 방출(export)된다기보다는 포착동안 저장되는 온-칩 메모리 영역을 제공한다. 이후 저장된 정보는, 일단 포착이 완료되면, ETB 트레이스 리포지터리(240)로부터 감소된 클록 레이트로 판독될 수 있다. 이것은 JTAG 인터페이스(84)를 통해 이루어진다. 이러한 2 단계 프로세스는 많은, 고속 디바이스 핀들을 사용하는 넓은 트레이스 포트에 대한 필요성을 제거한다. 효율적으로, "제로-핀" 트레이스 포트는 디바이스가 이미 핀들에서 JTAG 포트를 가지는 경우 생성된다. ETB 트레이스 리포지터리(240)는 더 높은 주파수에서 트레이스 포트 대역폭 제한을 초과하는 풀 32비트 데이터 포트를 사용하여 데이터를 수용할 수 있으며, 시스템 통합기(integrator)에 의해 제공되는 RAM 블록으로 통합될 수 있다.
일 실시예에서, ETB 트레이스 리포지터리(240)는 각각이 32비트 폭을 가지는 512개 엔트리들로서 정렬된 2KB의 크기를 가진다. ETB 트레이스 리포지터리(240)는 JTAG 액세스가능한 레지스터들의 세트를 통해 사용자와 인터페이스한다. 각각의 레지스터는 JTAG 인터페이스(84)를 통해 판독되거나 기록될 수 있다. 이들 레지스터들은, 일단 트레이스 포착이 완료되면, 트레이스-포착 세션에 대한 ETB 트레 이스 리포지터리(240)를 설정하고, ETB 트레이스 리포지터리(240)의 콘텐츠를 판독하기 위해 사용된다. ETB 트레이스 리포지터리(240)는 인덱스로서의 판독-포인터를 ETB 트레이스 리포지터리(240) 메모리 어레이로 제공한다. JTAG 인터페이스(84)를 통한 ETB 트레이스 리포지터리(240)의 콘텐츠 판독시에, 판독-포인터는 판독할 위치를 나타낸다. ETB 트레이스 리포지터리(240)는 또한 인덱스로서의 기록-포인터를 ETB 트레이스 리포지터리(240) 메모리 어레이에 제공한다. 트레이스 데이터가 ETB 트레이스 리포지터리(240)로 기록되는 경우, 상기 트레이스 데이터는 기록-포인터에 의해 나타나는 엔트리에 기록된다. 각각의 기록 동작들은 기록이 발생한 이후 다음 위치로 상기 기록-포인터를 자동-증분시킨다. ETB 트레이스 리포지터리(240)는 ETM 트레이스 스트림의 작은 창만을 포착할 수 있다. ETB는 언제 데이터를 포착할지를 결정하기 위해 ETM으로부터 트리거 패킷을 검색하고 트리거-카운터는 ETB 트레이스 리포지터리(240)에 의해 포착된 사전-트리거 데이터 및 사후-트리거 데이터 간의 분할을 특정하는데 사용된다.
도 9는 ETM(232)에서의 트리거 블록 회로(250)를 도시한다. DSP(40)의 개시된 실시예를 위한 ETM(232)은 각각이 2개의 단일 어드레스 비교기(SAC) 회로(252 및 254), 하나의 데이터 비교기(DC) 회로(256), 및 16-비트 카운터 회로(258)를 가지는 4개의 트리거 블록들을 포함한다. 트리거 블록 회로(250)는 트리거링 부분(260) 및 필터링 부분(262)이라는 두 개의 주요 섹션들로 분할될 수 있다. 트리거링 부분(260)은 시퀀서(아래에 설명됨)로 제공되고 시퀀서가 언제 상태를 변경할지를 제어한다. 트리거링 부분(260)에서, SAC 회로(252:254)는 AND/OR 회로(264) 를 제공(feed)하며, AND/OR 회로(264) 자신은 DC 회로(256)와 함께 AND 회로(266)를 제공된다. AND 회로(266)으로부터의 출력은 트리거 매치 신호(268)를 생성하기 위해 카운터 회로(258)를 제공된다. 필터링 부분(262)은 언제 명령 트레이싱을 인에이블 또는 디스에이블 할지를 결정한다. 필터링 부분(262)에서, SAC 회로(252:254)는 AND 회로(270)를 제공된다. SAC 회로는 또한 상태-인에이블 회로(272)를 피드하고, SAC 회로는 상태-인에이블 회로(274)를 제공된다. 또한, AND 회로(270)는 상태-인에이블 회로(276)를 제공된다. OR 회로는 트레이스 인에이블 출력(280)을 생성하기 위해 상태-인에이블 회로(272:276)로부터 신호들을 수신한다. 각각의 트리거 블록 회로(250)는 스레드 매칭 회로(282)를 제공하는데, 이는 아래 도 10에서 더 상세히 기술된다.
각각의 트리거 블록 회로(250)는 특정 스레드 또는 스레드들의 그룹으로 SAC 회로(252) 및 DC 회로(256)를 선택적으로 제한하는 ASID 및 TID 매치 레지스터들을 포함한다. 추가적으로, 각각의 트리거 블록 회로(250)는 단일 하드웨어 스레드로 제한될 수 있다. SAC 회로(252)는 메모리 액세스 명령에 의해 생성된 어드레스가 언제 사전-프로그램된 값과 매치하는지를 검출한다. SAC 회로(252)는 32-비트 비교를 지원한다. 상기 비교를 위한 메모리 소스는 프로그램 카운터 및 로드/저장 어드레스 사이에서 프로그램가능하다. 일 실시예에서, 비교 타입은 다음 옵션들을 사용하여 프로그램가능할 수 있다: 같음 (==), 같지 않음 (!=), 이상 (>=), or 미만 (<). 액세스-타입은 로드-또는 저장, 로드-온리 또는 저장-온리에 제한될 수 있다. 이러한 실시예에서, SAC 회로(252:254)는 각각의 메모리 소스에 대한 가상 어드레스 매칭만을 지원할 수 있다.
DC 회로(256)는 메모리 액세스 데이터 값이 사전 프로그램된 값과 언제 매칭하는지를 검출하고, 32-비트 비교를 수행할 수 있다. 64-비트 어드레스에 대해, 소스는 상위(upper) 및 하위(lower) 워드 사이에서 프로그램 가능하다. 같음 (==) 및 같지 않음 (!=) 비교 타입들을 지원한다. 32-비트 마스크 레지스터는 비교 부분을 필터링해 내도록 사용될 수 있다. DC 회로(256)는 임의-바이트 매칭을 지원하고, 액세스-타입은 로드-또는 저장, 로드-온리 또는 저장-온리로서 설정될 수 있다. 추가로, DC 회로(256)의 출력이 선택가능하게 디스에이블될 수 있다.
SAC 회로(252:254) 및 DC 회로(256) 매치들은 카운터 회로(258)가 언제 감소하는지를 결정한다. 도 9에 도시된 바와 같이, SAC 회로(252:254) 매치 결과들은 함께 AND 되거나 OR될 수 있다. 이후, 이 결과는 DC 회로(256) 매치 결과와 결합된다. 이 최종 결과는 카운터 회로(258)를 인에이블하도록 사용된다. 카운터 회로(258)는 사용자-정의된 값으로 사전-로딩될 수 있으며, 매치들이 발생할 때 감소한다. 트리거 카운터가 0에 도달하면, 트리거 블록은 매치를 시퀀서에 시그널링한다.
카운터 회로(258)는 카운터가 리로딩되는 경우 제어하는 3-비트 상태 인에이블 마스크를 포함한다. 새로운 상태로 들어갈 때, 만약 이 상태가 상태-인에이블 마스크에서의 인에이블된 상태들 중 하나와 매칭한다면, 카운터가 리로딩된다. 카운터는 또한 그것이 0에 도달하는 언제든 자동으로 리로딩된다. 상기 카운터는 카운트를 1로 설정함으로써 바이패스될 수 있다. 2개의 SAC 회로들( 252:254)로부터 의 매치 결과들은 또한 명령 흐름 트레이싱을 인에이블하거나 디스에이블하도록 사용된다.
필터링 부분(262)은 트리거 블록 회로(250)가 개별 SAC 회로(252) 매치에 대해 트레이스(trace)하도록 허용한다. 따라서, 각각의 SAC 회로(252:254)에 대해, 관련된 상태-인에이블 마스크가 매칭하는 경우, 그리고 SAC 회로가 매칭하는 경우, 트레이싱이 인에이블된다. 트레이스는 또한 어드레스 범위 매칭에 대해 발생할 수 있다. 트레이싱은 SAC 회로 252:254 매칭들의 AND에 기초하여 인에이블된다. 이후 매칭은 상태-인에이블-마스크에 의해 추가로 한정(qualify)된다. 상기 3개의 트레이스 소스들 각각은 현재 상태에 의해 상기 매치를 한정하도록 분리된 3비트 상태 인에이블 마스크를 가진다. 상기 룰을 사용하여, 사용자는, 예를 들어, 서로 다른 트레이스 영역들을 정의할 수 있다. 한 영역은 프로그램 카운터(PC)가 100보다 크고 200보다 작은 경우, 즉 상기 회로가 상태 1인 경우 스레드 i에 대한 트레이스 명령들 흐름을 포함할 수 있다.
제 2 영역은 PC가 100보다 작고 상태 0에 있거나 또는 상기 PC가 200보다 크고 상태 2에 있는 경우 스레드 j에 대한 트레이스 명령 흐름을 위한 것일 수 있다. 다수의 트리거-블록들이 존재하므로, 최종 트레이스 인에이블은 각각의 트리거-블록의 트레이스-인에이블의 OR이다. 어드레스 비교의 조합된 결과들을 매칭시키는 모든 스레드들, 상태-인에이블, 및 스레드-매칭이 트레이스될 수 있다. 다수의 활성 스레드들이 인에이블 조건들에 매칭한다면, 이들 스레드들은 동시에 트레이스될 수 있다.
도 10은 TID 입력(284), ASID 입력(286), 및 TNUM 입력(288)에 응답하는 스레드 매칭 회로(282)를 나타낸다. TID 입력(284)은 AND 회로(290)에 피드하고, 상기 AND 회로(290)는 또한 TID 마스크 회로(292)로부터의 반전 피드를 수신한다. TID 마스크 회로(292)의 반전은 또한 TID 매치 회로(296) 출력과 함께 AND 회로(294)에 제공된다. AND 회로(290 및 294)는 비교기(298)에서 비교되고, 그 출력은 OR 회로(300)로 제공된다. OR 회로(300)는 비교기 회로(298) 출력을 TID 매치 인에이블 회로(302)의 반전과 논리적으로 OR 하여 AND 회로(304)를 제공된다. 비교기 회로(306)는 OR 회로(310)로의 입력(feed)를 생성하기 위해 ASID 입력(286)을 ASID 매치 회로(308)와 비교한다. OR 회로(310)는 ASID 매치 인에이블 회로(314) 반전 신호의 논리적 OR로부터 출력(312)을 생성한다. 최종적으로, TNUM 입력(288)은 비교기 회로(316)에서 TNUM 매치 회로(318)로부터의 출력과 비교되어 입력 신호(320)를 생성한다. OR 회로(322)는 입력(320)을 TNUM 매치 인에이블 회로(324)로부터 반전 입력과 논리적으로 OR시킨다. 스레드 매치 신호(326)의 생성시, AND 회로(304)는 OR 회로들(300, 310, 및 322)로부터의 출력을 논리적으로 AND한다.
따라서, 각각의 트리거 블록 회로(250), 스레드-매치 회로(282),는 트리거링 부분(260) 및 필터링 부분(262) 모두의 동작을 특정 스레드 및 스레드들의 그룹에 한정하도록 기능한다. 각각의 트리거 블록은 TID 매치 회로(296), TID 마스크 회로(292), ASID 매치 인에이블 회로(314), 및 TNUM 매치인에이블 회로(324)를 포함한다. 이러한 성능을 사용하기 위해, 매치 레지스터들은 현재 스레드들의 식별자와 비교하기 위해 사용되는 기준 값들을 사용하여 프로그램될 수 있다. TID 매치 회로(296)에 대해, 상기 비교는 TID 마스크 회로(292)를 통해 TID의 특정 부분에 제한될 수 있다. 이는 TID들의 그룹이 매치되도록 한다. 추가로, 각가의 매치 타입에 대해, 매칭은 사용자 프로그램가능 인에이블 레지스터들을 통해 디스에이블될 수 있으며, 트리거 블록 회로(250)는 한정 조건들 모두를 만족시키는 스레드들에 대해서만 동작한다.
ETM(232)의 일 양상은 이벤트들 및 더 복잡한 이벤트 검출 시나리오의 체인화를 위해 시퀀서 프로세서를 포함한다. 시퀀서 프로세스 및 연관된 트리거 블록 회로(250)의 동작을 예시하기 위해, 도 11은 시퀀서 흐름도(330)를 나타낸다. 트리거 블록 회로 입력들(332:338)에 대한 응답으로, 시퀀서 프로세스(330)는 3개 상태(S0:S2)에서 도시된 예에서 동작한다. 시퀀서 프로세스(310)의 동작을 위해, 상태 S0로부터, 프로세스 흐름은 S1 또는 S2로 진행할 수 있다. S1으로부터, 시퀀싱은 S2로 진행하거나 S0로 역진행한다. S2로부터, 시퀀싱은 S1 또는 S0으로 진행한다.
따라서, 시퀀서 프로세스(330)는 3개 상태 S0:S2를 포함하며, 상태들간의 트랜지션은 프로그램 가능하고 트리거 블록 회로들(332:338)로부터의 매칭들에 기초한다. 도 12의 표는 각각의 트랜지션에 대한 프로그램가능한 룰들을 나열한다. 시퀀서 프로세스(330)는 각각의 트리거 블록 회로들(332:338)이 상태-인에이블들에 대해 조정되도록 인에이블하기 위해 트레이스 필터링에서 사용된다. 이는 트레이싱이 특정 상태들로 제한되도록 한다. 새로운 상태로 진입할 때, 각각의 트리거 블록 회로들(332:338) 내의 카운터는 초기값으로 리로딩될 수 있다. 소정 상태로 진입할 때, ISDB(82) 브레이크포인트가 어써트(assert)될 수 있다. 소정 상태로 진입할 때, 트리거 마커는 트레이스 스트림으로 삽입될 수 있다. 소정 상태로 진입할 때, 외부 트리거 제어 역시 어써트될 수 있다. 외부 트리거는 시퀀스가 소정 상태인 언제든지 어써트된 채 유지될 수 있다. 소정 상태로 진입할 때, DSP(40)에 대한 인터럽트가 어써트될 수 있다. 리셋 이후, 카운터가 상태 0으로 초기화된다. 다수의 트랜지션들이 동시에 발생하는 경우, 시퀀서는 현재 상태로 유지된다.
ETM은 DSP(40)와 관련된 다양한 이벤트들을 기록할 수 있는 6개의 카운터들을 포함한다. 기본 동작은 프로그램 가능한 소스로서 각각의 카운터를 사용한다. 사용자-프로그램 가능 영역 카운터는 고정된 개수의 사이클들의 윈도우들에 실행을 분배한다. 상기 윈도우 동안, 이벤트들이 카운터들에 누적된다. 윈도우의 종단에서, 카운터 값들은 패킷들로 형성되어 트레이스 포트를 통해 전송된다. 상기 카운터들은 이후 리셋되고 프로세스가 다시 시작한다. 프로파일링 유닛이 프로그램 흐름 트레이싱과 동시에 동작하는 경우, 이는 성능 이벤트들에 관한 상세한 정보와 중첩되는 프로그램 흐름 트레이스를 초래한다. 추가적으로, 프로파일링 유닛은 상기 유닛이 언제 활성인지를 제한하기 위한 상태-인에이블 마스크를 포함한다.
영역 카운터는 고정된 개수의 사이클들의 윈도우들에 실행을 분배하기 위해 사용된다. 상기 영역의 크기는 사용자-프로그램가능 레지스터에 의해 결정된다. 영역 카운터는 사용자-특정된 값으로 초기화되고, 프로파일링-이벤트 카운터들 모두가 리셋된다. 이후, 영역 카운터가 카운트다운을 시작한다. 영역 카운터가 0에 도달하면, 상기 프로파일링-이벤트 카운트들 각각에 대한 값은 트레이스 스트림에 서 방출된다. 이후 프로세스가 다시 시작한다. 영역-카운터는 상태-인에이블이 매칭하는 경우만을 카운트한다. 프로파일링이 비활성인 경우, 영역 카운터는 자신의 값을 유지하고, 인에이블된 상태가 재-진입될 때 재개한다.
프로파일링 카운터가 정보를 누적할 수 있는 서로 다른 이벤트들은 (a) d-캐시 미스들; (b) d-캐시 중지 사이클들; (c) i-캐시 미스들; (d) i-캐시 중지 사이클들; (e) ITLB 및 DTLB 미스들; 및 (f) 전체 중지 사이클들을 포함한다. 추가로, 각각의 프로파일링 카운터는 특정 하드웨어 스레드들에서 발생하는 이벤트들로 상기 카운터를 제한하기 위해 6-스레드 마스크를 포함한다.
영역 카운터와 더불어, 프로파일링 카운터들은 상태-인에이블 마스크가 현재 상태와 매칭할 때만 활성이다. 나머지 모든 다른 시간들 동안, 카운트들은 자신의 값을 유지하고, 인에이블 상태가 재진입되는 경우 카운팅을 재개한다.
ETM(232)의 기능은 다양한 사용자-프로그램가능 레지스터들의 설정에 의해 결정된다. 각각의 레지스터는 JTAG 인터페이스(84)를 통해 액세스된다. 도 13은 이러한 목적으로 ETM(232) 제어 레지스터들을 나열하는 표를 제공한다.
요약하면, 본 발명은 프로세서에서의 소프트웨어 실행에 관련한 실시간 정보를 포착함으로써 소프트웨어 명령 디버깅 동작들을 개선하기 위한 방법 및 시스템을 제공한다. 상기 방법 및 시스템은 디지털 신호 프로세서와 연관된 코어 프로세서 내에서 코어 프로세서 프로세스를 동작시키기 위한 명령들 및 회로를 포함한다. 본 발명은 디지털 신호 프로세서의 디버깅 메커니즘 내에서 비-간섭적 디버깅 프로세스를 동작시킨다. 코어 처리 프로세스와 연관된, 그리고 상기 프로세서에서 실 시간으로 발생하는 소프트웨어 실행의 미리 결정된 양상들을 실시간으로 비-간섭적으로 모니터링 하는 것은 임베디드 트레이스 매크로셀을 사용한다. 상기 임베디드 트레이스 매크로셀은 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들을 레코딩하고 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들 내에서 발생하는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성한다. 본 발명은 적어도 하나의 브레이크포인트에 대한 응답으로 비-간섭적 디버깅 프로세스의 양상들을 제어한다. 그 결과, 본 발명은 멀티-스레드 디지털 신호 프로세서의 최대 모든 스레드들에 대한 타이밍 및 멀티-스레드 트레이스 명령 시퀀싱을 위한 비-간섭적 디버깅 프로세스와 협력한다.
멀티 스레드 디지털 신호의 비-간섭적, 스레드-선택적 디버깅을 위해 여기서 설명된 처리 특징들 및 기능들은 다양한 방식들로 구현될 수 있다. 예를 들어, DSP(40)가 상기 설명된 동작들을 수행할 수 있을 뿐만 아니라, 본 실시예들 역시 주문형 반도체(ASIC), 마이크로제어기, 디지털 신호 처리기, 또는 여기에 설명된 기능들을 수행하도록 설계된 다른 전자 회로들로 구현될 수 있다. 뿐만 아리라, 여기서 설명된 프로세스 및 특징들은 이러한 다양한 신호 및 명령 처리 시스템들에 의한 판독 및 실행을 위해 자기, 광학 또는 다른 기록 매체에 저장될 수 있다. 따라서, 바람직한 실시예들의 전술된 설명은 당업자가 본 발명을 제작하거나 사용할 수 있도록 제공된다. 이들 실시예들에 대한 다양한 수정은 당업자들에게 자명할 것이며, 여기서 정의된 포괄 원리들은 본 발명의 권리를 사용함이 없이 다른 실시예들에 적용될 수 있다. 따라서, 본 발명은 여기서 나타난 실시예들에 제한되는 것으로 의도되는 것이 아니라, 여기서 개시된 원리들 및 신규한 특징들에 부합하는 가장 넓은 범위에 따라야 한다.

Claims (33)

  1. 디지털 신호 프로세서에서 소프트웨어 실행 흐름에 관련한 실시간 정보를 포착(capture)함으로써 소프트웨어 명령 디버깅 동작들을 개선하기 위한 방법으로서,
    상기 디지털 신호 프로세서의 디버깅 메커니즘 내에서 비-간섭적 디버깅 프로세스를 동작시키는 단계 - 상기 디버깅 메커니즘은 상기 디지털 신호 프로세서의 코어 프로세서와 연관됨 - ;
    코어 처리 프로세스와 연관되고 상기 디지털 신호 프로세서에서 실시간으로 발생하는 소프트웨어의 실행의 미리 결정된 양상(aspect)들에 대해 실시간으로 소프트웨어를 비-간섭적으로 모니터링하는 단계;
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들을 레코딩하는 단계;
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 상기 선택가능한 양상들 내에서 일어나는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성하는 단계; 및
    상기 적어도 하나의 브레이크포인트에 대한 응답으로 상기 비-간섭적 디버깅 프로세스의 양상들을 제어하는 단계를 포함하는,
    방법.
  2. 제1항에 있어서,
    프로파일링 카운트들의 미리 결정된 세트에 대한 응답으로 적어도 하나의 레코드를 생성하는 단계를 추가로 포함하는,
    방법.
  3. 제1항에 있어서,
    선택가능한 개수의 상기 디지털 신호 프로세서의 스레드들의 상기 소프트웨어 실행을 비-간섭적으로 모니터링하는 단계를 추가로 포함하는,
    방법.
  4. 제1항에 있어서,
    상기 비-간섭적 디버깅 프로세스를 시작하기 위한 트리거를 프로그램 카운터 값에 대한 응답으로 생성하는 단계를 추가로 포함하는,
    방법.
  5. 제1항에 있어서,
    상기 소프트웨어 실행에서 사용된 로드/저장 어드레스에 대한 응답으로 상기 비-간섭적 디버깅 프로세스를 시작하기 위한 트리거를 생성하는 단계를 추가로 포함하는,
    방법.
  6. 제1항에 있어서,
    상기 소프트웨어 실행시에 발생하는 이벤트들의 시퀀스에 대한 응답으로 다수의 레코드들을 생성하는 단계를 추가로 포함하는,
    방법.
  7. 제1항에 있어서,
    상기 소프트웨어 실행에 관련하여 발생하는 외부 이벤트에 대한 응답으로 적어도 하나의 레코드를 생성하는 단계를 추가로 포함하는,
    방법.
  8. 제1항에 있어서,
    JTAG 인터페이스를 사용하여 상기 레코딩 및 상기 비-간섭적 모니터링의 동작을 프로그래밍하는 단계를 추가로 포함하는,
    방법.
  9. 제1항에 있어서,
    레코딩 매체로의 전송을 위해 상기 레코딩으로부터 유도된 레코드들의 패킷 스트림을 생성하는 단계를 추가로 포함하는,
    방법.
  10. 제1항에 있어서,
    임베디드 트레이스 버퍼 레코딩 매체로의 전달을 위해 상기 레코딩으로부터 유도된 레코드들의 패킷 스트림을 생성하는 단계를 추가로 포함하는,
    방법.
  11. 프로세서 내의 소프트웨어 실행 흐름과 관련한 실시간 정보를 포착하는 능력을 포함하여 상기 디지털 신호 프로세서와 관련한 동작을 위한 디지털 신호 프로세서 디버깅 시스템으로서,
    코어 프로세서와 연관되고 비-간섭적 디버깅 프로세스를 동작시키는 디버깅 메커니즘;
    상기 코어 처리 프로세스와 연관된 소프트웨어 실행의 미리 결정된 양상들에 대해 실시간으로 소프트웨어 실행을 비-간섭적으로 모니터링하기 위한 임베디드 트레이스 매크로셀(macrocell);
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들의 레코딩을 위한 상기 임베디드 트레이스 매크로셀에 대한 레코딩 명령들 및 관련 회로; 및
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 상기 선택 가능한 양상들 내에서 일어나는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성하기 위해 상기 디버깅 메커니즘 및 상기 임베디드 트레이스 매크로셀 간에 연관된 브레이크포인트 생성 명령;
    상기 적어도 하나의 브레이크포인트에 대한 응답으로 비-간섭적 디버깅 프로세스의 개시를 위한 디버깅 메커니즘과 연관된 제어 명령들을 포함하는,
    디지털 프로세서 디버깅 시스템.
  12. 제11항에 있어서,
    프로파일링 카운트들의 미리 결정된 세트에 대한 응답으로 적어도 하나의 레코드를 생성하는 동작을 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  13. 제11항에 있어서,
    선택가능한 개수의 상기 디지털 신호 프로세서의 스레드들을 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  14. 제11항에 있어서,
    상기 비-간섭적 디버깅 프로세스를 시작하기 위한 트리거를 프로그램 카운터 값에 대한 응답으로 생성하는 동작을 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  15. 제11항에 있어서,
    상기 소프트웨어 실행에서 사용된 로드/저장 어드레스에 대한 응답으로 상기 비-간섭적 디버깅 프로세스를 시작하기 위한 트리거를 생성하는 동작을 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  16. 제11항에 있어서,
    상기 소프트웨어 실행시에 발생하는 이벤트들의 시퀀스에 대한 응답으로 다수의 레코드들을 생성하는 동작을 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  17. 제11항에 있어서,
    상기 소프트웨어 실행에 관련하여 발생하는 외부 이벤트에 대한 응답으로 적어도 하나의 레코드를 생성하는 동작을 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  18. 제11항에 있어서,
    상기 레코딩 및 상기 관련된 회로 및 상기 비-간섭적 모니터링의 동작을 프로그래밍하기 위한 JTAG 인터페이스를 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  19. 제11항에 있어서,
    레코드들의 패킷 스트림은 레코딩 매체로의 전송을 위해 상기 레코딩 명령들 및 상기 관련 회로로부터 유도되는,
    디지털 프로세서 디버깅 시스템.
  20. 제11항에 있어서,
    상기 레코딩 명령들 및 상기 관련 회로의 사용으로부터 유도된 레코드들의 패킷 스트림을 저장하기 위한 임베디드 트레이스 버퍼를 추가로 포함하는,
    디지털 프로세서 디버깅 시스템.
  21. 개인용 전자 디바이스 지원 동작을 위한 디지털 신호 프로세서로서,
    상기 디지털 신호 프로세서 내의 소프트웨어 실행 흐름에 관련한 실시간 정보를 포착하고, 이에 대한 응답으로 다수의 비-간섭적 디버깅 동작들을 수행하기 위한 디버깅 수단을 포함하고, 상기 디버깅 수단은,
    상기 디지털 신호 프로세서의 디버깅 메커니즘 내에서 비-간섭적 디버깅 프로세스를 동작시키기 위한 수단 - 상기 디버깅 메커니즘은 상기 디지털 신호 프로세서 상에서 동작하는 코어 처리 프로세스와 연관됨 - ;
    코어 처리 프로세스와 연관되고 상기 코어 프로세서에서 실시간으로 발생하는 소프트웨어의 실행의 미리 결정된 양상들에 대해 실시간으로 소프트웨어를 비-간섭적으로 모니터링하기 위한 수단;
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들을 레코딩하기 위한 수단;
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 상기 선택가능한 양상들 레코딩 수단 내에서 일어나는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성하기 위한 수단; 및
    상기 적어도 하나의 브레이크포인트에 대한 응답으로 상기 비-간섭적 디버깅 프로세스의 양상들을 제어하기 위한 수단을 포함하는,
    디지털 신호 프로세서.
  22. 제21항에 있어서,
    프로파일링 카운트들의 미리 결정된 세트에 대한 응답으로 적어도 하나의 레코드를 생성하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  23. 제21항에 있어서,
    선택가능한 개수의 상기 디지털 신호 프로세서의 스레드들의 상기 소프트웨어 실행을 비-간섭적으로 모니터링하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  24. 제21항에 있어서,
    상기 비-간섭적 디버깅 프로세스를 시작하기 위한 트리거를 프로그램 카운터 값에 대한 응답으로 생성하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  25. 제21항에 있어서,
    상기 소프트웨어 실행에서 사용된 로드/저장 어드레스에 대한 응답으로 상기 비-간섭적 디버깅 프로세스를 시작하기 위한 트리거를 생성하기 위한 단계를 추가로 포함하는,
    디지털 신호 프로세서.
  26. 제21항에 있어서,
    상기 소프트웨어 실행시에 발생하는 이벤트들의 시퀀스에 대한 응답으로 다수의 레코드들을 생성하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  27. 제21항에 있어서,
    상기 소프트웨어 실행에 관련하여 발생하는 외부 이벤트에 대한 응답으로 적어도 하나의 레코드를 생성하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  28. 제21항에 있어서,
    JTAG 인터페이스를 사용하여 상기 레코딩 및 상기 비-간섭적 모니터링의 동작을 프로그래밍하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  29. 제21항에 있어서,
    레코딩 매체로의 전송을 위해 상기 레코딩으로부터 유도된 레코드들의 패킷 스트림을 생성하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  30. 제21항에 있어서,
    임베디드 트레이스 버퍼 레코딩 매체로의 전달을 위해 상기 레코딩으로부터 유도된 레코드들의 패킷 스트림을 생성하기 위한 수단을 추가로 포함하는,
    디지털 신호 프로세서.
  31. 프로세서 내의 소프트웨어 실행 흐름과 관련한 실시간 정보의 포착을 포함하여 멀티-스레드 디지털 신호 프로세서의 디버깅을 위해 컴퓨터 판독가능 프로그램 코드 수단을 포함하는 컴퓨터 사용가능 매체로서,
    상기 디지털 신호 프로세서의 디버깅 메커니즘 내에서 비-간섭적 디버깅 프로세스를 동작시키기 위한 컴퓨터 판독가능 프로그램 코드 수단 - 상기 디버깅 메 커니즘은 코어 프로세서와 연관됨 - ;
    코어 처리 프로세스와 연관되고 상기 디지털 신호 프로세서에서 실시간으로 발생하는 소프트웨어의 실행의 미리 결정된 양상들에 대해 실시간으로 소프트웨어를 비-간섭적으로 모니터링하기 위한 컴퓨터 판독가능 프로그램 코드 수단;
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 선택가능한 양상들을 레코딩하기 위한 컴퓨터 판독가능 프로그램 코드 수단;
    상기 비-간섭적으로 모니터링된 소프트웨어 실행의 상기 선택가능한 양상들 내에서 일어나는 이벤트들에 대한 응답으로 적어도 하나의 브레이크포인트를 생성하기 위한 컴퓨터 판독가능 프로그램 코드 수단; 및
    상기 적어도 하나의 브레이크포인트에 대한 응답으로 상기 비-간섭적 디버깅 프로세스의 양상들을 제어하기 위한 컴퓨터 판독가능 프로그램 코드 수단을 포함하는,
    컴퓨터 사용가능 매체.
  32. 제31항에 있어서,
    상기 디지털 신호 프로세서의 다수의 스레드들을 선택하기 위한 컴퓨터 판독가능 프로그램 코드 수단을 추가로 포함하는,
    컴퓨터 사용가능 매체.
  33. 제31항에 있어서,
    임베디드 트레이스 버퍼 레코딩 매체로의 전송을 기록하기 위한 상기 컴퓨터 판독가능 프로그램 코드 수단으로부터 유도된 레코드들의 패킷 스트림을 전달하기 위한 컴퓨터 판독가능 프로그램 코드 수단을 추가로 포함하는,
    컴퓨터 사용가능 매체.
KR1020097012388A 2006-11-15 2007-11-13 개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀 KR101078934B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/560,339 US8341604B2 (en) 2006-11-15 2006-11-15 Embedded trace macrocell for enhanced digital signal processor debugging operations
US11/560,339 2006-11-15

Publications (2)

Publication Number Publication Date
KR20090091170A true KR20090091170A (ko) 2009-08-26
KR101078934B1 KR101078934B1 (ko) 2011-11-01

Family

ID=39327393

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097012388A KR101078934B1 (ko) 2006-11-15 2007-11-13 개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀

Country Status (6)

Country Link
US (1) US8341604B2 (ko)
EP (1) EP2092428A2 (ko)
JP (2) JP2010510584A (ko)
KR (1) KR101078934B1 (ko)
CN (2) CN103399819A (ko)
WO (1) WO2008061102A2 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140070493A (ko) * 2012-11-30 2014-06-10 아나로그 디바이시즈 인코포레이티드 신호 흐름이 프로그램된 디지털 신호 프로세서 코드의 효율적인 자원 관리를 위한 시스템 및 방법
US9697005B2 (en) 2013-12-04 2017-07-04 Analog Devices, Inc. Thread offset counter

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2433750A1 (en) * 2003-06-27 2004-12-27 Ibm Canada Limited - Ibm Canada Limitee Automatic collection of trace detail and history data
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8504993B2 (en) * 2006-12-29 2013-08-06 Intel Corporation Virtualization of micro-code patches for probe less debug
US7681012B2 (en) * 2007-01-30 2010-03-16 Texas Instruments Incorporated Method, system and device for handling a memory management fault in a multiple processor device
US8484516B2 (en) * 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US8381192B1 (en) * 2007-08-03 2013-02-19 Google Inc. Software testing using taint analysis and execution path alteration
US8561025B1 (en) * 2008-03-31 2013-10-15 Apigee Corporation Flow and module level detecting and debugging with inclusion of generated log statements
US20090254888A1 (en) * 2008-04-07 2009-10-08 International Business Machines Corporation Debug tours for software debugging
US8635603B2 (en) * 2008-10-21 2014-01-21 International Business Machines Corporation Handling debugger breakpoints in a shared instruction system
US8413120B2 (en) * 2008-10-27 2013-04-02 Advanced Micro Devices, Inc. Method and system for thread monitoring
JP2011100388A (ja) * 2009-11-09 2011-05-19 Fujitsu Ltd トレース情報収集装置,トレース情報処理装置,およびトレース情報収集方法
EP2499571B1 (en) 2009-11-10 2018-09-19 NXP USA, Inc. Advanced communication controller unit and method for recording protocol events
US8607202B2 (en) 2010-06-04 2013-12-10 Lsi Corporation Real-time profiling in a multi-core architecture
CN102279789B (zh) * 2010-06-13 2014-02-05 三星电子(中国)研发中心 生产阶段嵌入式系统的调试系统及其调试方法
US20120124428A1 (en) * 2010-11-17 2012-05-17 Zeng Thomas M Method and system for testing software on programmable devices
US8566645B2 (en) * 2010-12-02 2013-10-22 Advanced Micro Devices, Inc. Debug state machine and processor including the same
US8677186B2 (en) 2010-12-15 2014-03-18 Microsoft Corporation Debugging in data parallel computations
US8997066B2 (en) 2010-12-27 2015-03-31 Microsoft Technology Licensing, Llc Emulating pointers
US20120246622A1 (en) * 2011-03-23 2012-09-27 Neil Puthuff Storage of software execution data by behavioral identification
US8677322B2 (en) * 2011-06-29 2014-03-18 Microsoft Corporation Debugging in a multiple address space environment
CN102253890A (zh) * 2011-08-16 2011-11-23 北京汉邦高科数字技术有限公司 一种嵌入式调试方法
US8880958B2 (en) * 2011-09-20 2014-11-04 Qualcomm Incorporated Interleaved architecture tracing and microarchitecture tracing
US8938649B2 (en) * 2012-10-19 2015-01-20 Texas Instruments Incorporated Debug trace stream timestamping using upstream correlation
US9311209B2 (en) * 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine
US9262163B2 (en) * 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
KR101438979B1 (ko) * 2012-12-31 2014-09-11 현대자동차주식회사 소프트웨어 검사 방법 및 시스템
US9928159B2 (en) 2013-02-26 2018-03-27 Qualcomm Incorporated System and method to select a packet format based on a number of executed threads
US9594655B2 (en) 2013-07-25 2017-03-14 Altera Corporation Cache debug system for programmable circuits
US9965310B2 (en) 2013-08-28 2018-05-08 Empire Technology Development Llc Virtual machine exit analyzer
US20150106792A1 (en) * 2013-10-16 2015-04-16 Asset Intertech, Inc. Method of presenting trace data with improved efficiency by using hosted formatted output commands
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
US9626313B2 (en) * 2014-12-18 2017-04-18 Qualcomm Incorporated Trace buffer based replay for context switching
US9996354B2 (en) * 2015-01-09 2018-06-12 International Business Machines Corporation Instruction stream tracing of multi-threaded processors
KR20180047196A (ko) * 2016-10-31 2018-05-10 삼성전자주식회사 디버깅 정보를 기록하는 전자장치 및 제어방법
US20230205673A1 (en) 2020-05-11 2023-06-29 Politecnico Di Milano A computing platform and method for synchronize the prototype execution and simulation of hardware devices
CN115114117B (zh) * 2022-07-26 2022-12-27 南方科技大学 数据记录方法和数据记录装置
CN116502576B (zh) * 2023-06-26 2023-10-20 北京象帝先计算技术有限公司 指令流跟踪验证方法及调试系统

Family Cites Families (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4080650A (en) 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4669059A (en) 1983-11-07 1987-05-26 Motorola, Inc. Method and apparatus in a data processor for selectively disabling a power-down instruction
US4901307A (en) 1986-10-17 1990-02-13 Qualcomm, Inc. Spread spectrum multiple access communication system using satellite or terrestrial repeaters
US5136717A (en) 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US5093914A (en) 1989-12-15 1992-03-03 At&T Bell Laboratories Method of controlling the execution of object-oriented programs
US5103459B1 (en) 1990-06-25 1999-07-06 Qualcomm Inc System and method for generating signal waveforms in a cdma cellular telephone system
JPH0855023A (ja) 1994-07-25 1996-02-27 Motorola Inc データ処理システムおよびその方法
US5551043A (en) 1994-09-07 1996-08-27 International Business Machines Corporation Standby checkpoint to prevent data loss
US6467054B1 (en) 1995-03-13 2002-10-15 Compaq Computer Corporation Self test for storage device
US6226749B1 (en) 1995-07-31 2001-05-01 Hewlett-Packard Company Method and apparatus for operating resources under control of a security module or other secure processor
US5544311A (en) 1995-09-11 1996-08-06 Rockwell International Corporation On-chip debug port
US5951696A (en) 1996-11-14 1999-09-14 Hewlett-Packard Company Debug system with hardware breakpoint trap
JPH10207790A (ja) 1997-01-20 1998-08-07 Fuji Xerox Co Ltd 入出力制御装置
US5915083A (en) 1997-02-28 1999-06-22 Vlsi Technology, Inc. Smart debug interface circuit for efficiently for debugging a software application for a programmable digital processor device
US5835705A (en) 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US6275868B1 (en) * 1997-03-12 2001-08-14 Microsoft Corporation Script Engine interface for multiple languages
US6094729A (en) 1997-04-08 2000-07-25 Advanced Micro Devices, Inc. Debug interface including a compact trace record storage
US6314530B1 (en) 1997-04-08 2001-11-06 Advanced Micro Devices, Inc. Processor having a trace access instruction to access on-chip trace memory
US5944841A (en) 1997-04-15 1999-08-31 Advanced Micro Devices, Inc. Microprocessor with built-in instruction tracing capability
US6321337B1 (en) 1997-09-09 2001-11-20 Sanctum Ltd. Method and system for protecting operations of trusted internal networks
US6697935B1 (en) 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6029248A (en) 1997-12-15 2000-02-22 Lucent Technologies Inc. Corporation Locking system to protect a powered component interface from erroneous access by an attached, powered-off component
US6018759A (en) 1997-12-22 2000-01-25 International Business Machines Corporation Thread switch tuning tool for optimal performance in a computer processor
US6106571A (en) 1998-01-29 2000-08-22 Applied Microsystems Corporation Relocatable instrumentation tags for testing and debugging a computer program
US6249907B1 (en) 1998-03-24 2001-06-19 International Business Machines Corporation Method system and article of manufacture for debugging a computer program by encoding user specified breakpoint types at multiple locations in the computer program
US6757829B1 (en) 1998-05-29 2004-06-29 Texas Instruments Incorporated Program debugging system for secure computing device having secure and non-secure modes
DE19835610A1 (de) 1998-08-06 2000-02-10 Siemens Ag Programmgesteuerte Einheit und Verfahren zum Debuggen derselben
US6480818B1 (en) 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6532553B1 (en) 1998-12-08 2003-03-11 Arm Limited Debugging data processing systems
US6343371B1 (en) 1999-01-14 2002-01-29 Compaq Computer Corporation System and method for statically detecting potential race conditions in multi-threaded computer programs
US6535905B1 (en) 1999-04-29 2003-03-18 Intel Corporation Method and apparatus for thread switching within a multithreaded processor
US6341347B1 (en) 1999-05-11 2002-01-22 Sun Microsystems, Inc. Thread switch logic in a multiple-thread processor
US6714958B1 (en) 1999-07-28 2004-03-30 International Business Machines Corporation Detecting and causing latent deadlocks in multi-threaded programs
CN1148656C (zh) * 1999-09-07 2004-05-05 皇家菲利浦电子有限公司 面向线程的调试
US6684348B1 (en) 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
WO2001033351A1 (fr) 1999-10-29 2001-05-10 Fujitsu Limited Architecture de processeur
GB2362730B (en) 1999-12-23 2004-02-11 St Microelectronics Sa Computer register watch
US6665802B1 (en) 2000-02-29 2003-12-16 Infineon Technologies North America Corp. Power management and control for a microcontroller
US6985848B2 (en) 2000-03-02 2006-01-10 Texas Instruments Incorporated Obtaining and exporting on-chip data processor trace and timing information
JP2001356934A (ja) * 2000-03-02 2001-12-26 Texas Instr Inc <Ti> ハードウェアシステムとインタラクトするソフトウェアシステムの構成方法およびデジタルシステム
US6388533B2 (en) * 2000-03-02 2002-05-14 Texas Instruments Incorporated Programmable ring oscillator
US6934937B1 (en) * 2000-03-30 2005-08-23 Broadcom Corporation Multi-channel, multi-service debug on a pipelined CPU architecture
JP2001331340A (ja) 2000-05-19 2001-11-30 Nec Corp コードチェックによるモード切替方式および方法
US20020065646A1 (en) 2000-09-11 2002-05-30 Waldie Arthur H. Embedded debug system using an auxiliary instruction queue
US6691251B2 (en) * 2000-11-30 2004-02-10 Palmsource, Inc. On-chip debugging system emulator
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6915416B2 (en) 2000-12-28 2005-07-05 Texas Instruments Incorporated Apparatus and method for microcontroller debugging
US7093108B2 (en) * 2001-02-01 2006-08-15 Arm Limited Apparatus and method for efficiently incorporating instruction set information with instruction addresses
US7093236B2 (en) 2001-02-01 2006-08-15 Arm Limited Tracing out-of-order data
US7134116B1 (en) 2001-04-30 2006-11-07 Mips Technologies, Inc. External trace synchronization via periodic sampling
US7069544B1 (en) * 2001-04-30 2006-06-27 Mips Technologies, Inc. Dynamic selection of a compression algorithm for trace data
US7076804B2 (en) 2001-05-11 2006-07-11 International Business Machines Corporation Automated program resource identification and association
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
US7823131B2 (en) * 2001-06-29 2010-10-26 Mentor Graphics Corporation Debugger for a hardware-implemented operating system
JP2003177938A (ja) 2001-12-07 2003-06-27 Fujitsu Ltd 電子装置及びそのデバッグ認証方法
US7131114B2 (en) * 2001-07-16 2006-10-31 Texas Instruments Incorporated Debugger breakpoint management in a multicore DSP device having shared program memory
US7134002B2 (en) 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US7017084B2 (en) 2001-09-07 2006-03-21 Network Appliance Inc. Tracing method and apparatus for distributed environments
US6901527B2 (en) 2001-09-21 2005-05-31 International Business Machines Corporation Synchronizing multiple time stamps distributed within a computer system with main time of day register
DE10148109B4 (de) 2001-09-28 2006-10-12 Infineon Technologies Ag Verfahren zum Speichern oder Weiterleiten von Daten
US7080289B2 (en) 2001-10-10 2006-07-18 Arm Limited Tracing multiple data access instructions
US20030074650A1 (en) * 2001-10-17 2003-04-17 Tankut Akgul Debugger operating system for embedded systems
US6834360B2 (en) 2001-11-16 2004-12-21 International Business Machines Corporation On-chip logic analyzer
US20030135720A1 (en) 2002-01-14 2003-07-17 International Business Machines Corporation Method and system using hardware assistance for instruction tracing with secondary set of interruption resources
US7254716B1 (en) 2002-02-13 2007-08-07 Lsi Corporation Security supervisor governing allowed transactions on a system bus
US7213134B2 (en) 2002-03-06 2007-05-01 Hewlett-Packard Development Company, L.P. Using thread urgency in determining switch events in a temporal multithreaded processor unit
US6615371B2 (en) 2002-03-11 2003-09-02 American Arium Trace reporting method and system
US7055139B2 (en) * 2002-03-28 2006-05-30 Hewlett-Packard Development Company, L.P. Multiprocess debugging using multiple conventional debuggers
GB2389432B (en) 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7516446B2 (en) 2002-06-25 2009-04-07 International Business Machines Corporation Method and apparatus for efficient and precise datarace detection for multithreaded object-oriented programs
US7185319B2 (en) * 2002-07-09 2007-02-27 Microsoft Corporation Debugging distributed applications
US7512954B2 (en) 2002-07-29 2009-03-31 Oracle International Corporation Method and mechanism for debugging a series of related events within a computer system
US7346895B2 (en) 2002-07-31 2008-03-18 International Business Machines Corporation Method of tracing data collection
US7529258B2 (en) 2002-08-09 2009-05-05 Lecroy Corporation Method and system for cascading analyzer trace memories
DE10244922B4 (de) 2002-09-25 2009-08-13 Infineon Technologies Ag Programmgesteuerte Einheit und Verfahren zum Debuggen von einer programmgesteuerten Einheit ausgeführten Programmen
US7519862B2 (en) 2002-10-11 2009-04-14 Broadcom Corporation Software programmable verification tool having a single built-in self-test (BIST) module for testing and debugging multiple memory modules in a device under test (DUT)
CA2408457A1 (en) * 2002-10-17 2004-04-17 Ibm Canada Limited-Ibm Canada Limitee Collection and detection of differences of values of expressions/variables when debugging a computer process
US7225431B2 (en) * 2002-10-24 2007-05-29 International Business Machines Corporation Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture
US7360117B1 (en) 2002-10-24 2008-04-15 Verisilicon Holdings (Cayman Islands) Co. Ltd. In-circuit emulation debugger and method of operation thereof
GB2396930B (en) 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
GB2396034B (en) 2002-11-18 2006-03-08 Advanced Risc Mach Ltd Technique for accessing memory in a data processing apparatus
GB2411254B (en) 2002-11-18 2006-06-28 Advanced Risc Mach Ltd Monitoring control for multi-domain processors
US7370210B2 (en) 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
US7219333B2 (en) 2002-11-22 2007-05-15 Texas Instruments Incorporated Maintaining coherent synchronization between data streams on detection of overflow
US6948155B2 (en) 2002-11-22 2005-09-20 Texas Instruments Incorporated Little offset in multicycle event maintaining cycle accurate tracing of stop events
US7047451B2 (en) 2002-11-22 2006-05-16 Texas Instruments Incorporated Tracing program counter addresses using native program counter format and instruction count format
US7131113B2 (en) 2002-12-12 2006-10-31 International Business Machines Corporation System and method on generating multi-dimensional trace files and visualizing them using multiple Gantt charts
US7325169B2 (en) 2002-12-17 2008-01-29 Texas Instruments Incorporated Apparatus and method for trace stream identification of multiple target processor events
JP4436036B2 (ja) 2002-12-18 2010-03-24 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報処理装置、トレース処理方法、プログラム及び記録媒体
US6798713B1 (en) 2003-01-31 2004-09-28 Zilog, Inc. Implementing software breakpoints
JP3974063B2 (ja) 2003-03-24 2007-09-12 松下電器産業株式会社 プロセッサおよびコンパイラ
JP2004318658A (ja) * 2003-04-18 2004-11-11 Matsushita Electric Ind Co Ltd デバッグ制御装置及びその制御方法
US7013400B2 (en) 2003-04-24 2006-03-14 International Business Machines Corporation Method for managing power in a simultaneous multithread processor by loading instructions into pipeline circuit during select times based on clock signal frequency and selected power mode
US7159101B1 (en) 2003-05-28 2007-01-02 Mips Technologies, Inc. System and method to trace high performance multi-issue processors
US7222262B2 (en) 2003-08-05 2007-05-22 Newisys, Inc. Methods and devices for injecting commands in systems having multiple multi-processor clusters
US7383537B2 (en) 2003-08-20 2008-06-03 Microsoft Corporation Debugging an application that employs rights-managed content
US7600221B1 (en) 2003-10-06 2009-10-06 Sun Microsystems, Inc. Methods and apparatus of an architecture supporting execution of instructions in parallel
US7321957B2 (en) 2003-10-24 2008-01-22 Intel Corporation Debugging a trusted component in a system
US7328429B2 (en) 2003-11-13 2008-02-05 Intel Corporation Instruction operand tracing for software debug
US7383540B2 (en) 2003-12-12 2008-06-03 International Business Machines Corporation Altering execution flow of a computer program
US7475303B1 (en) * 2003-12-29 2009-01-06 Mips Technologies, Inc. HyperJTAG system including debug probe, on-chip instrumentation, and protocol
US7461407B2 (en) 2004-02-05 2008-12-02 Research In Motion Limited Debugging port security interface
US7360203B2 (en) 2004-02-06 2008-04-15 Infineon Technologies North America Corp. Program tracing in a multithreaded processor
US7263599B2 (en) 2004-02-06 2007-08-28 Infineon Technologies Thread ID in a multithreaded processor
JP4347082B2 (ja) 2004-02-23 2009-10-21 日本電気株式会社 イベントトレースデータの時刻補正装置,時刻補正方法及び時刻補正プログラム
JP4409349B2 (ja) 2004-04-27 2010-02-03 Okiセミコンダクタ株式会社 デバッグ回路およびデバッグ制御方法
US7945900B2 (en) 2004-04-29 2011-05-17 Marvell International Ltd. Debugging tool for debugging multi-threaded programs
US20060253894A1 (en) 2004-04-30 2006-11-09 Peter Bookman Mobility device platform
US7380276B2 (en) 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7558920B2 (en) 2004-06-30 2009-07-07 Intel Corporation Apparatus and method for partitioning a shared cache of a chip multi-processor
US7363523B2 (en) 2004-08-31 2008-04-22 Intel Corporation Method and apparatus for controlling power management state transitions
JP4520788B2 (ja) 2004-07-29 2010-08-11 富士通株式会社 マルチスレッドプロセッサ
US7278058B1 (en) 2004-08-25 2007-10-02 Unisys Corporation Methods and apparatus to diagnose software
US7814308B2 (en) 2004-08-27 2010-10-12 Microsoft Corporation Debugging applications under different permissions
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US9038070B2 (en) * 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
US20060129999A1 (en) 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
US7783925B2 (en) 2004-12-02 2010-08-24 Texas Instruments Incorporated Receiving control, data, and control segments of communication scan packets
US7681014B2 (en) 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US7418629B2 (en) 2005-02-11 2008-08-26 International Business Machines Corporation Synchronizing triggering of multiple hardware trace facilities using an existing system bus
US7472378B2 (en) * 2005-02-23 2008-12-30 International Business Machines Corporation Breakpoint management and reconciliation for embedded scripts in a business integration language specified program process
US20060206902A1 (en) 2005-03-14 2006-09-14 Sujat Jamil Variable interleaved multithreaded processor method and system
US7369954B2 (en) 2005-03-17 2008-05-06 International Business Machines Corporation Event tracing with time stamp compression and history buffer based compression
US7747985B2 (en) 2005-03-18 2010-06-29 Microsoft Corporation Conformance testing of multi-threaded and distributed software systems
US7917907B2 (en) 2005-03-23 2011-03-29 Qualcomm Incorporated Method and system for variable thread allocation and switching in a multithreaded processor
JP2006285430A (ja) 2005-03-31 2006-10-19 Matsushita Electric Ind Co Ltd Cpuメモリアクセス解析装置
US7657875B2 (en) 2005-04-12 2010-02-02 International Business Machines Corporation System and method for collecting a plurality of metrics in a single profiling run of computer code
US7698686B2 (en) 2005-04-15 2010-04-13 Microsoft Corporation Method and apparatus for performance analysis on a software program
US7558984B2 (en) 2005-04-27 2009-07-07 Texas Instruments Incorporated Apparatus and method for test and debug of a processor/core having advanced power management
US7536597B2 (en) 2005-04-27 2009-05-19 Texas Instruments Incorporated Apparatus and method for controlling power, clock, and reset during test and debug procedures for a plurality of processor/cores
US8881114B2 (en) 2005-05-16 2014-11-04 Texas Instruments Incorporated Stored program writing stall information when a processor stalls waiting for another processor
US7730545B2 (en) 2005-05-23 2010-06-01 Arm Limited Test access control for secure integrated circuits
US7548911B2 (en) 2005-05-28 2009-06-16 Microsoft Corporation Diagnosing problems in distributed systems
JP2007026051A (ja) 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 情報処理装置および情報処理システム
US8694621B2 (en) 2005-08-19 2014-04-08 Riverbed Technology, Inc. Capture, analysis, and visualization of concurrent system and network behavior of an application
WO2007028227A1 (en) * 2005-09-09 2007-03-15 Ibm Canada Limited - Ibm Canada Limitee Integrating different programming language debug tools for observing thread execution
US9146832B2 (en) * 2005-10-14 2015-09-29 Oracle International Corporation Debugging functionality embedded in an application
JP4388518B2 (ja) * 2005-11-01 2009-12-24 株式会社ソニー・コンピュータエンタテインメント スレッドデバッグ装置、スレッドデバッグ方法及びプログラム
US7770155B2 (en) 2005-11-03 2010-08-03 International Business Machines Corporation Debugger apparatus and method for indicating time-correlated position of threads in a multi-threaded computer program
US7802233B2 (en) 2006-01-30 2010-09-21 Microsoft Corporation Automated display of trace historical data
US20070234306A1 (en) 2006-03-31 2007-10-04 Klinger Uwe D Tracing performance of machine-readable instructions
US20080034350A1 (en) * 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
KR20070109432A (ko) * 2006-05-11 2007-11-15 삼성전자주식회사 커널 인지 디버깅 장치 및 방법
US20070288906A1 (en) 2006-05-16 2007-12-13 Texas Instruments Incorporated Efficient transfer of timing information
US7849315B2 (en) 2006-05-22 2010-12-07 General Dynamics C4 Systems, Inc. Method for managing operability of on-chip debug capability
GB0613289D0 (en) 2006-07-04 2006-08-16 Imagination Tech Ltd Synchronisation of execution threads on a multi-threaded processor
US8301870B2 (en) 2006-07-27 2012-10-30 International Business Machines Corporation Method and apparatus for fast synchronization and out-of-order execution of instructions in a meta-program based computing system
US8051162B2 (en) 2006-07-28 2011-11-01 Hewlett-Packard Development Company, L.P. Data assurance in server consolidation
US7702055B2 (en) 2006-09-29 2010-04-20 Mips Technologies, Inc. Apparatus and method for tracing processor state from multiple clock domains
GB2443277B (en) 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8380966B2 (en) 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8533530B2 (en) 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
US7657791B2 (en) 2006-11-15 2010-02-02 Qualcomm Incorporated Method and system for a digital signal processor debugging during power transitions
US8370806B2 (en) 2006-11-15 2013-02-05 Qualcomm Incorporated Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
DE102007009909B4 (de) 2007-02-28 2016-09-08 Globalfoundries Inc. Verfahren zum Validieren einer atomaren Transaktion in einer Multikernmikroprozessorumgebung
US9195462B2 (en) 2007-04-11 2015-11-24 Freescale Semiconductor, Inc. Techniques for tracing processes in a multi-threaded processor
US8484516B2 (en) 2007-04-11 2013-07-09 Qualcomm Incorporated Inter-thread trace alignment method and system for a multi-threaded processor
US7681078B2 (en) 2007-05-18 2010-03-16 Freescale Semiconductor, Inc. Debugging a processor through a reset event
US7996823B2 (en) * 2007-05-31 2011-08-09 International Business Machines Corporation Mechanism to provide debugging and optimization in policy and knowledge controlled distributed computing systems, through the use of tagged policies and knowledge representation elements
US8001428B2 (en) 2007-10-29 2011-08-16 Arm Limited Packing trace protocols within trace streams
US8739133B2 (en) * 2007-12-21 2014-05-27 International Business Machines Corporation Multi-threaded debugger support

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140070493A (ko) * 2012-11-30 2014-06-10 아나로그 디바이시즈 인코포레이티드 신호 흐름이 프로그램된 디지털 신호 프로세서 코드의 효율적인 자원 관리를 위한 시스템 및 방법
US9697005B2 (en) 2013-12-04 2017-07-04 Analog Devices, Inc. Thread offset counter

Also Published As

Publication number Publication date
WO2008061102A2 (en) 2008-05-22
US20080115115A1 (en) 2008-05-15
KR101078934B1 (ko) 2011-11-01
EP2092428A2 (en) 2009-08-26
JP2010510584A (ja) 2010-04-02
JP2013254508A (ja) 2013-12-19
CN101529393B (zh) 2013-09-18
CN103399819A (zh) 2013-11-20
CN101529393A (zh) 2009-09-09
US8341604B2 (en) 2012-12-25
WO2008061102A3 (en) 2008-11-20

Similar Documents

Publication Publication Date Title
KR101078934B1 (ko) 개선된 디지털 신호 프로세서 디버깅 동작들을 위한 임베디드 트레이스 매크로셀
KR101155673B1 (ko) 신뢰받은/신뢰받지 못한 디지털 신호 프로세서 디버깅 동작들을 위한 방법 및 시스템
US8370806B2 (en) Non-intrusive, thread-selective, debugging method and system for a multi-thread digital signal processor
US8484516B2 (en) Inter-thread trace alignment method and system for a multi-threaded processor
KR101097620B1 (ko) 전력 트랜지션들 동안 디지털 신호 프로세서를 위한 방법 및 시스템
KR101083182B1 (ko) 비-간섭적 디지털 신호 프로세서 디버깅 동안 명령 스터핑 동작들을 위한 방법 및 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee