KR20010006188A - 마이크로프로세서 기반 장치용 트레이스 캐시 - Google Patents

마이크로프로세서 기반 장치용 트레이스 캐시 Download PDF

Info

Publication number
KR20010006188A
KR20010006188A KR1019997009267A KR19997009267A KR20010006188A KR 20010006188 A KR20010006188 A KR 20010006188A KR 1019997009267 A KR1019997009267 A KR 1019997009267A KR 19997009267 A KR19997009267 A KR 19997009267A KR 20010006188 A KR20010006188 A KR 20010006188A
Authority
KR
South Korea
Prior art keywords
trace
information
processor
cache
trace cache
Prior art date
Application number
KR1019997009267A
Other languages
English (en)
Other versions
KR100546087B1 (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 KR20010006188A publication Critical patent/KR20010006188A/ko
Application granted granted Critical
Publication of KR100546087B1 publication Critical patent/KR100546087B1/ko

Links

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

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

Abstract

프로세서 장치(102)는 명령 실행 흐름을 재구성하기 위한 정보를 제공할 수 있는 온칩 명령 트레이스 캐시(200)를 합체한다. 트레이스 정보는 정상적인 프로세서(104) 동작을 정지시키지 않고 포획될 수 있다. 직렬(204) 및 병렬(214) 통신 채널들은 트레이스 정보를 외부 장치들에 전달하기 위해 제공된다. 본 발명의 발표된 실시예에서, 명령 흐름을 방행하는 명령들이 보고되는데, 특히 목표 어드레스가 어떤 방법으로든 데이터에 의존하는 명령들이다. 예를 들면, 목표 어드레스가 데이터 레지스터(또는 스택과 같은 다른 메모리 위치)로부터 제공되는 호출 명령 또는 비조건 분기 명령들은 트레이스 캐시 엔트리가 생성되게한다. 많은 비조건 분기들 또는 순차적인 명령들의 경우에, 목표 어드레스가 명령 스트림으로부터 완전하게 결정될 수 있기 때문에, 어떤 엔트리도 트레이스 캐시(200)내에 배치되지 않는다. 명령 캐시(200)가 제공하는 다른 정보는 트랩 또는 인터럽트 핸들러의 목표 어드레스, 귀환 명령의 목표 어드레스, 절차 귀환으로부터의 어드레스들, 태스크 식별기들, 및 트레이스 포획 정지/시작 정보를 포함한다.

Description

마이크로프로세서 기반 장치용 트레이스 캐시{TRACE CACHE FOR A MICROPROCESSOR-BASED DEVICE}
프로세서 클럭 속도 증가와 맞물린 소프트웨어 복잡성의 증가는 응용 소프트웨어 개발자들에게 부담을 증가시켜왔다. 새로운 소프트웨어 제품들을 개발하고 디버깅하는 비용은 요즘 프로세서 선택시에 중요한 요인이다. 프로세서가 소프트웨어 디버그를 적절하게 촉진하지 못함으로써, 고객 개발 시간을 보다 길게하여 산업체에서 이용시 프로세서의 장점을 감소시킨다. 소프트웨어 디버그 지원을 제공할 필요성은 내장형(embedded) 제품 산업에서 특히 절실하고, 여기서 특화된 온칩 회로는 종종 프로세서 코어(core)와 결합된다.
소프트웨어 엔지니어외에, 다른 분야들도 또한 디버그 툴 구성에 의해 영향을 받는다. 이들 분야들은 프로세서에서 명령 실행 흐름을 반영하는 포획된 소프트웨어 트레이스 데이터를 통해 찾아야하는 "트레이스" 알고리즘 개발자; 신호 동기화, 클럭 주파수 및 트레이스 대역폭 문제들을 처리하는 내부 회로 에뮬레이터(emulator) 개발자와; 그리고 증가된 프로세서 비용이나 설계 및 개발의 복잡성을 초래하는 해결책을 원하지 않는 프로세서 제조업자를 포함한다.
데스크탑 시스템에 있어서, 복잡한 멀티태스킹(multitasking) 운용체제들은 현재 디버깅을 지원하는데 이용될 수 있다. 그러나, 이러한 운용체제를 신뢰성있게 구동시키기 위한 최초의 일은 종종 특별한 개발 장비를 필요로한다. 데스크탑 환경에서의 표준은 아니지만, 그러한 장비 이용은 종종 내장형 산업에서 취해지는 접근법이다. 로직 분석기 (logic analyzer), 읽기 전용 메모리(ROM) 에뮬레이터 및 내부 회로 에뮬레이터들(ICE)이 종종 사용된다. 내부 회로 에뮬레이터들은 다른 디버그 환경들에 비해 어떤 이점들을 제공하는데, 상기 이점들은 완벽한 제어 및 메모리에 대한 가시성 및 레지스터 내용들을 제공할 뿐만아니라, 시스템 메모리가 불충분한 경우에 오버레이(overlay)와 트레이스 메모리를 제공하는 것이다. 에뮬레이션 장비와 목표 시스템간에 통신이 이루어지도록 프로세서 소켓과 주문형 에뮬레이터 후미를 인터페이스로 연결하는 것을 포함하는 통상적인 내부회로를 이용함으로써, 요즘과 같은 특이한 패키지에서 점점더 어렵고 비싸지고 있고 그리고 제품 수명 주기를 단축시키고 있다.
완전한 기능을 하는 내부 회로 에뮬레이션이 요구된다고 가정할 경우에, 공지된 프로세서 제조기술중 소수만이 에뮬레이션 장비에 요구되는 지원을 제공할 수 있다. 개인용 컴퓨터(PC) 시스템을 위한 대부분의 프로세서들은 존재하는 핀들이 소프트웨어 디버그시 이용을 위해 다중화되는 다중화된 접근법을 활용한다. 이 접근법은 내장형 산업에서 특히 바람직하지 않으며, 이 산업에서 핀 기능을 다중 부여 (overload)하는 것은 더 어렵다.
다른 보다 개선된 프로세서들은 제시간에 디버그 핀들을 다중화한다. 그러한 프로세서들에서, 어드레스 버스는 BTA(분기 목표 어드레스(Branch Target Addres)) 주기 동안 소프트웨어 트레이스 정보를 보고하는데 이용된다. 그러나, BTA 주기는 규칙적인 버스 동작으로부터 스틸링(stealing)된다. 디버그 환경에서, 분기 활동은 높고, 캐시 히트율(hit rate)은 낮으며, BTA 주기를 숨기는 것은 불가능하다. 어드레스 버스로의 접근에 대한 결과적인 모순은 명령 트레이스 정보의 손실을 방지하기 위해서 프로세서 "감속(throttle back)"을 필요로한다. 통신산업에서, 예컨대, 소프트웨어는 통상적으로 분기를 광범위하게 이용하여 빈약한 캐시 활용을 경험하며, 종종 20% 이상의 감속을 초래한다. 이같은 감속량은 실시간으로 제한조건들을 수용해야 하는 내장형 제품들에게는 받아들일 수 없는 양이다.
다른 접근법에서, 제2 "트레이스" 또는 "슬레이브(slave)" 프로세서는 주 프로세서와 결합되어, 2개의 프로세서들이 단계별로 동작한다. 제2 슬레이브 프로세서는 데이터 버스상에 인출된 명령들을 감시하는데 이용되어, 그것의 내부 상태를 주 프로세서와 동기화화시켜 유지한다. 슬레이브 프로세서의 어드레스 버스는 트레이스 정보를 제공하도록 작용한다. 전력을 증가시킨 후에, JTAG((Joint Test Action Group)공동 시험 활동 군) 입력을 경유하여, 제2 프로세서는 슬레이브 모드 동작으로 스위치된다. 명령을 인출할 필요 없이, 그것의 어드레스 버스 및 다른 핀들은 필요한 트레이스 정보를 제공한다.
또 다른 현존하는 접근법은 디버그 지원을 모든 프로세서내에 만들지만, 그러나 필요한 신호 핀들을 한정된 수의 패키지들내에 본딩-아웃(bonding-out)하는 것을 수반한다. 이들 "특별히" 패키지된 프로세서 버전들은 디버그 동안 이용되어 최종 제품을 위해 보다 작은 패키지로 대체된다. 이같은 본드-아웃 접근법은 부가적인 본드 패드 위치들을 모든 제조 장비내에 지원할 필요성을 경험한다. 이것은 특히 디버그 지원 변형이 상당한 수의 "여분의" 핀들을 요구하는 경우, 작은 패키지들 및 패드 한정 설계물들에 부담이 될 수 있다. 부가적으로, 특별히 패키지된 프로세서들의 디버그 능력은 통상적인 프로세서 제품 시스템에 이용될 수 없다.
또 하나의 접근법(모토롤라사의 "백그라운드 디버그 모드")으로서, 한정된 온칩 디버그 회로가 기본적인 실행 제어를 위해 제공된다. 부가적인 핀들을 필요로하는 전용 직렬 링크를 통해, 이 접근법은 디버거가 목표 시스템을 시작 및 정지시키게 하여 시스템 메모리내의 특별한 명령들을 삽입함으로써 기본적인 코드 정지점들을 적용한다. 일단 정지되면, 특별한 명령들이 메모리 변수들과 레지스터 내용들을 검사하기 위해 이용된다. 이같은 직렬 링크는, 그러나 트레이스 지원을 제공하지 못하는 바 - 부가적인 전용 핀들 및 비싼 외부 트레이스 포획 하드웨어가 명령 트레이스 데이터를 제공하는데 요구된다.
따라서, 소프트웨어 디버깅을 위한 현재의 해결책들은 증가된 패키징 및 개발 비용, 회로 복잡성, 프로세서 감속, 및 대역폭 정합 어려움들을 포함하는 다양한 제한요소들로 어려움을 겪는다. 더욱이, 현재 트레이스 정보를 제공하기 위한 어떤 적당한 저비용 절차도 존재하지 않는다. 현존하는 해결책들의 제한요소들은 내부 프로세서 클럭 주파수들이 계속해서 증가함에 따라 미래에 더욱 악화될 것이다.
발명의 개요
간략하게, 본 발명을 따르는 프로세서 기반 장치는 명령 실행 흐름을 재구성하기 위한 정보를 제공할 수 있는 온칩 명령 트레이스 캐시를 포함한다. 트레이스 정보는 정상적인 프로세서 동작을 정지시키기지 않고도 포획될 수 있다. 2개의 직렬 및 병렬 통신 채널들이 트레이스 정보를 외부 장치들에게 전달하기 위해 제공된다. 본 발명의 발표된 실시예에서, 명령 트레이스 캐시의 제어능력과 관측능력은 IEEE-1149.1-1990이 지시하는 JTAG(Joint Test Action Group) 인터페이스 또는 프로세서 기반 장치속에 합채된 유사하게 표준화된 인터페이스를 이용하는 소프트웨어 디버그 포트를 통해 이루어진다.
바람직하게는, 명령 트레이스 캐시내에 저장된 정보는 보다 작은 캐시가 이용될 수 있도록 "압축된다". 게다가, 트레이스 데이터를 압축함으로써 내부 프로세서가 훨씬 빠르게 동작하는 동안일지라도 외부 하드웨어가 정상적인 버스 속도로 동작하게한다. 따라서, 비싸지 않은 외부 포획 하드웨어가 본 발명을 따르는 프로세서 장치와 함께 이용될 수 있다.
본 발명의 발표된 실시예에서, 명령 스트림에서 어드레스가 프로그램 이미지(목적 모듈)로부터 획들될 수 있는 경우, 그때 이 어드레스는 트레이스 데이터에 제공되지 않는다. 바람직하게는, 명령 흐름을 방해하는 명령들만이 보고되고; 그리고 목표 어드레스가 어떤 방법으로든 데이터에 의존하는 명령들만이 보고된다. 그와같은 "방해하는" 사건들은, 예컨대 목표 어드레스가 스택과 같은 데이터 레지스터나 다른 메모리 위치로부터 제공되는 호출 명령들 또는 비조건 분기 명령들을 포함한다. 많은 비조건 분기들 또는 순차 명령들의 경우에, 목표 어드레스가 명령 스트림으로부터 완벽하게 결정될 수 있기 때문에 어떤 엔트리도 트레이스 캐시내에 배치되지 못한다. 명령 트레이스 캐시가 제공하는 다른 정보는 트랩 또는 인터럽트 핸들러(interrupt handler)의 목표 어드레스, 귀환 명령의 목표 어드레스, 절차 귀환으로부터의 어드레스, 태스크(task) 식별기들, 및 트레이스 포획 정지/시작 정보를 포함한다. 이 기술은 트레이스 캐시로부터 외부 디버그 하드웨어로 전달된 정보량을 줄인다.
따라서, 명령 트레이스 정보를 제공하기 위해 융통성있는 높은 성능의 해결책을 제공하는 프로세서 기반 장치가 본 발명에 의해 제공된다. 발표된 온칩 명령 트레이스 캐시는 많은 현존하는 해결책들에서 발생하는 여러 가지의 대역폭 및 클럭 동기화 문제들을 완화시킨다.
본 발명은 마이크로프로세서에서 소프트웨어 디버그에 관한 것으로, 특히 온칩(on-chip) 명령 트레이스 캐시가 합체된 마이크로프로세서 기반 장치에 관한 것이다.
아래 양호한 실시예의 상세한 설명은 첨부 도면을 참조하여 고려될 시에, 본 발명을 보다 잘 이해할 수 있다.
도1은 본 발명에 따라 소프트웨어 디버그 해결책을 이용하는 소프트웨어 디버그 환경의 블럭도다.
도2는 본 발명에 따라 온칩 명령 트레이스 캐시를 합체하는 모범적인 내장형 프로세서 제품의 상세사항들을 제공하는 블럭도다.
도3은 본 발명에 따라 모범적인 명령 트레이스 캐시와 내장형 프로세서 제품의 다른 부품들간의 관계를 묘사하는 간략화된 블럭도다.
도4는 본 발명의 한 실시예에 따라 소프트웨어 디버그 커맨드(command) 통과를 설명하는 순서도다.
도5는 본 발명의 제2 실시예에 따라 개선된 소프트웨어 포트 커맨드 통과를 설명하는 순서도다.
도6A-6G는 본 발명을 따르는 명령 실행을 보고하기 위해 여러 종류의 트레이시 캐시 엔트리들의 일반적인 포맷을 설명한다.
발명을 실행하기 위한 모드(들)
이제 도면을 살펴보면, 도1은 본 발명의 계획된 이용을 설명하는 모범적인 소프트웨어 디버그 환경을 기술한다. 목표 시스템(T)이 본 발명에 따라 시스템 메모리(106)에 연결된 내장형 프로세서 장치(102)를 포함하는 것이 도시된다. 내장형 프로세서 장치(102)는 프로세서 코어(104), 명령 트레이스 캐시(200)(도2), 및 디버그 포트(100)를 합체한다. 본 발명에 중요한 것으로 고려되지 않음에도 불구하고, 내장형 프로세서 장치(102)는 응용 특성 함수를 실행하기 위해 (도시되지 않은)부가적인 회로를 합체하거나, 또는 독립형 프로세서나 디지털 신호 프로세서의 형태를 취할 수 있다. 바람직하게는, 디버그 포트(100)는 IEEE-1149.1-1990이 지시하는 JTAG 인터페이스 또는 다른 유사한 표준 직렬 포트 인터페이스를 이용한다.
호스트 시스템(H)은 상위 레벨 커맨드들을 전달하고 그리고 목표 시스템(T)이 생성한 디버그 정보의 발췌와 분석을 제어하기 위해 디버그 제어 소프트웨어(112)를 실행하는데 이용된다. 본 발명의 발표된 실시예의 호스트 시스템(H)과 목표 시스템(T)은 직렬 링크(110)를 경유하여 통신한다. 대부분의 컴퓨터들은 직렬 또는 병렬 인터페이스를 갖추며, 이 인터페이스는 직렬 커넥터(108) 수단에 의해 디버그 포트(100)에 별로 비싸지 않게 접속될 수 있으며, 상기 커넥터(108)는 여러 종류의 컴퓨터들이 호스트 시스템(H)으로서 작용하게 한다. 대안으로, 직렬 커넥터(108)는 보다 높은 속도의 JTAG-네트웍간 변환 장비로 대체될 수 있다. 더욱이, 목표 시스템(T)은 디버그/트레이스 정보를 내부적으로 분석하도록 구성될 수 있다.
도2를 참조하여, 본 발명을 따르는 내장형 프로세서 장치(102)의 상세부분들이 제공된다. 프로세서 코어(104) 외에, 도2는 트레이스 캐시(200)를 이용 및 제어할 수 있는 디버그 포트(100)의 여러가지 소자들의 개선된 실시예를 묘사한다. 당업자들에게 명백해지는 것처럼, 많은 다른 구성들이 가능하고, 아래에 기술된 여러가지 프로세서 장치(102) 부품들이 온칩 트레이스 캐시(200)를 제공하는 것과 관련된 이점들을 설명할 목적으로 도시된다.
본 발명의 발표된 실시예에 대한 중요성 중에서, 트레이스 제어 회로(218)와 트레이스 캐시(200)는 프로세서 코어(104)에서 명령 실행 흐름을 재구성하기 위해 트레이스 정보를 제공하도록 동작한다. 트레이스 제어 회로(218)는 트레이스 패드 인터페이스 포트(220) 또는 명령 트레이스 캐시(200)에 대한 "트레이싱"을 지원하고 그리고 명령 트레이스 포획을 선택적으로 활성화시키기 위해서 유저 제어를 제공한다. 트레이스 제어 회로(218)가 인에이블한 다른 특성들은 아래에서 보다 상세하게 토론되어지는 것처럼, 동기화화 어드레스 생성의 프로그램 능력과 유저가 지정한 트레이스 기록들을 포함한다. 트레이스 제어 회로(218)는 또한 트레이스 패드 인터페이스 포트(220)를 제어한다. 트레이스 패드 인터페이스 포트(220)는 이용될 시 클럭 동기화화 및 다른 문제들이 발생할 수 있음에도 불구하고, 프로세서 코어(104)가 명령들을 실행하는 동안 트레이스 데이터를 제공할 수 있다. 명령 트레이스 캐시(200)는 이 문제들 중 많은 것을 어드레스하여, 대역폭 정합을 향상시키고 그리고 프로세서 코어(104)에서 감속 회로를 합체할 필요성을 경감시킨다.
최소한도로, 통상적인 JTAG 핀들만이라도 본 발명의 설명된 실시예에서 소프트웨어 디버그 포트(100)에 지원될 필요가 있다. JTAG 핀들은 본래 프로세서 코어(104)가 실행할 명령들을 등록하기 위해서 존재하는 핀들을 이용하는 운반 메커니즘이다. 특히, 시험 클럭 신호(TCK), 시험 모드 선택 신호(TMS), JTAG 시험 액세스 포트 (TAP) 제어기(204)로 제공되고 그리고 상기 제어기(204)가 구동하는 시험 데이터 입력 신호(TDI) 및 시험 데이터 출력 신호(TDO)는 통상적인 JTAG 지원 신호들이고 그리고 당업자들에게 공지된 것이다. 아래에서 보다 상세히 토론되겠지만, 디버그 포트(100)의 "개선된" 실시예는 커맨드 인지 신호(CMDACK), 중단 요청/트레이스 포획 신호(BRTC), 정지 전송 신호(STOPTX), 및 표준 JTAG 인터페이스로의 트리거 신호 (TRIG)를 부가한다. 부가적인 신호들은 외부 정지점 어서션(breakpoint assertion)의 정확한 정확도와 감시, 내부 정지점들에 반응하여 외부 장치들의 트리거링, 및 JTAG 직렬 인터페이스의 상태 폴링(polling)의 제거를 고려한다. 이들 "측파대" 신호들은 여분의 기능을 제공하여 디버그 포트(100)를 위해 통신 속도를 개선한다. 이들 신호들은 또한 발표된 내장형 프로세서 장치(102)의 특별한 본드-아웃 버전에 제공된 선택적인 병렬 포트(214)의 동작을 돕는다.
JTAG TAP 제어기(204)는 통상적인 JTAG 신호들에 의해 표준 JTAG 직렬 데이터를 받아들여 제어한다. DEBUG 명령이 JTAG 명령 레지스터에 기록될 시, 직렬 디버그 시프터(shifter)(212)는 JTAG 시험 데이터 입력 신호(TDI) 및 시험 데이터 출력 신호(TDO)에 접속되어, 커맨드들과 데이터가 디버그 레지스터(210)내로 적재되어 상기 레지스터(210)로부터 판독될 수 있다. 본 발명의 발표된 실시예에서, 디버그 레지스터들(210)은 데이터를 전송(TX_DATA 레지스터) 및 수신(RX_DATA 레지스터)하기 위해 2개의 디버그 레지스터들인 명령 트레이스 구성 레지스터(ITCR)와 디버그 제어 상태 레지스터(DCSR)를 포함한다.
제어 인터페이스 상태 머신(206)은 직렬 디버그 시프터(212) 및 디버그 레지스터들 (210) 로/로부터 데이터의 적재/판독을 조정한다. 커맨드 디코드 및 프로세싱 블록(208)은 명령/데이터를 디코드하여 그들을 프로세서 인터페이스 로직(logic) (202) 및 트레이스 디버그 인터페이스 로직(216)으로 보낸다. 다른 기능들을 실행하는 것 외에, 트레이스 디버그 인터페이스 로직(216) 및 트레이스 제어 로직(218)은 트레이스 캐시(200)로부터 TAP 제어기(204)로 트레이스 정보의 전달을 조정한다. 프로세서 인터페이스 로직(202)은 트레이스 제어 로직(218)뿐만 아니라 프로세서 코어(104)와 직접 통신한다. 아래에 보다 상세히 설명되겠지만, 병렬 포트 로직(214)은 내장형 프로세서 장치(102)의 선택적인 본드-아웃 버전에 병렬 데이터 판독/기록 동작을 실행하기 위해서 제어 인터페이스 상태 머신(206) 및 디버그 레지스터들(210)과 통신한다.
디버그 정보가 통상적인 JTAG 신호들만을 이용하는 디버그 포트(100)에 의해 전달되기 전에, 포트(100)는 공용 JTAG 명령(DEBUG)을 TAP 제어기(204)내에 포함된 JTAG 명령 레지스터내로 기록함으로서 인에이블된다. 아래에 도시된 것처럼, 발표된 실시예의 JTAG 명령 레지스터는 32비트 데이터 필드(debug_data[31:0]), 디버그 포트(100)가 제공한 여러개의 내부 레지스터들 및 함수를 가리키기 위한 4비트 커맨드 필드, 커맨드 계류(pending) 플래그, 및 커맨드 종료 플래그를 구비하는 38비트 레지스터다. 이용할 수 있는 커맨드들의 수를 확장하기 위해서 어떤 커맨드들이 debug_data 필드로부터의 비트들을 서브필드(sub-field)로서 이용하는 것이 가능하다.
이 JTAG 명령 레지스터는 시험 모드 선택 신호(TMS)를 토글(toggle)하여 선택된다. 시험 모드 선택 신호(TMS)는 클럭의 JTAG 경로를 스캔 경로에서 변경되게 하여, 변동 길이를 갖는 복수의 경로들이 사용되도록 인에이블하는 한다. 바람직하게도, JTAG 명령 레지스터가 짧은 경로를 경유하여 액세스된다. 이 레지스터는 특정 시험 레지스터들내에 적재되거나 또는 이 레지스터들로부터 수신될 값들을 홀드하기 위해 "소프트(soft)" 레지스터를 포함하도록 구성된다.
도3을 참조하여, 본 발명을 따르는 모범적인 명령 트레이스 캐시(200)와 내장형 프로세서 장치(102)의 다른 성분들간의 관계를 묘사하는 간략화된 블록도가 도시된다. 본 발명의 한 실시예에서, 트레이스 캐시(200)는 가장 최근의 트레이스 엔트리들을 기록하는 128 엔트리 선입선출(FIFO) 원형 캐시다. 트레이스 캐시(200)의 크기를 증가시킴으로써, 필요한 실리콘 면적량이 증가할 지라도 포획될 수 있는 명령 트레이스 정보량을 증가시킨다.
아래에서 보다 상세히 설명되는 것처럼, 본 발명의 발표된 실시예에서 트레이스 캐시(200)는 명령들이 프로세서 코어(104)에 의해 실행되는 순서를 지시하는 다수의 20비트(또는 이상) 트레이스 엔트리들을 저장한다. 태스크 식별기들 및 트레이스 포획 정지/시작 정보와 같은 다른 정보가 트레이스 캐시(200)내에 배치될 수 있다. 트레이스 캐시(200)의 내용들은 직렬 또는 병렬 트레이스 핀들(230)에 의해 호스트 시스템(H)과 같은 외부 하드웨어로 제공된다. 대안으로, 목표 시스템(T)은 트레이스 캐시(200)의 내용들을 내부적으로 검사하도록 구성될 수 있다.
도4는 표준 JTAG 인터페이스를 이용할 시 커맨드 통과의 상위 레벨 순서도를 제공한다. 디버그 모드가 단계(400)로 들어가자마자, DEBUG 명령은 단계(402)에서 TAP 제어기(204)에 기록된다. 다음 단계(404)에서, 38비트 직렬 값은 데이터 필드에서 커맨드 계류 플래그 집합과 원하는 데이터(적용할 수 있는 경우, 그렇지 않은 경우 0)를 갖고 내부에서 전체적으로 이동된다. 제어는 계류 커맨드가 적재/언로드 (unloading)되어 커맨드 종료 플래그가 검사되는 단계(406)로 옮긴다. 커맨드 완성은 통상적으로 데이터 레지스터와 프로세서 레지스터 또는 메모리/IO 위치간에 값을 전달하는 것을 포함한다. 커맨드가 완성된 후에, 프로세서(104)는 커맨드 계류 플래그를 소거하여 커맨드 종료 플래그를 설정함과 동시에, 적용할 수 있는 경우 어떤 값을 데이터 필드에 저장한다. 전체 38비트 레지스터는 커맨드 종료 플래그 및 커맨드 계류 플래그를 검사하도록 스캔된다. 계류 플래그가 0으로 재설정되고 그리고 종료 플래그가 1로 설정되는 경우, 이전 커맨드는 종료된다. 플래그들의 상태는 제어 인터페이스 상태 머신(206)에 의해 포획된다. 플래그 상태의 슬레이브 복사본은 다음 명령이 적재되어야 하는지를 내부적으로 결정하기 위해서 저장된다. 슬레이브 복사본은 TAP 제어기(204) 상태들간의 플래그 상태들의 변경 가능성 때문에 보존된다. 이것이 프로세서(104)가 이전 명령이 다음 명령을 적재하기 전에 종료하였는지를 결정하게 한다.
종료 플래그가 단계(408)에서 결정된 것으로 설정되지 않은 경우, 제어는 단계(410)로 진행하여 38비트 커맨드의 적재/언로딩이 반복된다. 커맨드 종료 플래그가 또한 검사된다. 그다음, 제어는 단계(408)로 돌아간다. 종료 플래그가 단계(408)에서 결정된 것으로 설정되는 경우, 제어는 다음 커맨드를 처리하기 위해 단계(406)로 돌아간다. 통상적인 JTAG 프로세서에 의해 DEBUG 모드를 빠져나간다.
도2를 참조하여, 전술된 선택적인 측파대 신호들은 특별한 기능을 제공하기 위해서 개선된 디버그 포트(100)에서 이용된다. 선택적인 측파대 신호들은 중단 요청/트레이스 포획 신호(BRTC)를 포함할 수 있으며, 상기 포획 신호(BRTC)는 중단 요청 신호 또는 디버그 제어/상태 레지스터에 설정된 비트의 상태에 의존하는 트레이스 포획 인에이블 신호로서 작용할 수 있다. 중단 요청/트레이스 포획 신호(BRTC)가 중단 요청 신호로 작용하도록 설정되는 경우, 이 신호(BRTC)는 프로세서(104)가 디버그 모드로 들어가게 하도록 어서트된다(프로세서(104)는 JTAG 신호 규정에 의해 정지 커맨드에서 스캐닝함으로써 정지될 수 있다). 트레이스 포획 인에이블 신호로서 작용하도록 설정되는 경우, 중단 요청/트레이스 포획 신호(BRTC)가 트레이스 포획을 인에이블하도록 어서트된다. 이 신호를 디어서트(deassert)함으로써 트레이스 포획을 턴오프한다. 이 신호는 검출되어 내부 프로세서 클럭으로 동기화화된 후에 다음 명령 경계에 영항을 미친다. 중단 요청/트레이스 포획 신호(BRTC)가 어느 순간에 어서트될 것이다.
트리거 신호(TRIG)는 내부 프로세서 정지점이 어서트됐을 때마다 펄스를 내보내도록 구성된다. 트리거 신호(TRIG)는 로직 애널라이저와 같은 외부 포획 장비를 트리거하도록 이용될 수 있고, 트레이스 기록 포획 클럭 신호(TRACECLK)와 동기화화된다. 정지점이 생성될 시, 이 사건은 트레이스 포획 클럭 신호(TRACECLK)와 동기화화되며, 이 후에 트리거 신호(TRIG)는 트레이스 포획 지속기간 동안 액티브(active)한 것으로 유지된다.
정지 전송 신호(STOPTX)는 프로세서(104)가 DEBUG 모드를 등록하여 레지스터 질문/수정을 위해 준비할 시 어서트되며, 메모리 또는 I/O는 디버그 포트(100)를 통해 판독 및 기록한다. 본 발명의 발표된 실시예에서, 정지 전송 신호(STOPTX)는 비트 상태를 디버그 제어 상태 레지스터(DCSR)에 반영한다. 정지 전송 신호(STOPTX)는 트레이스 포획 클럭 신호(TRACECLK)와 동위상이다.
커맨드 인지 신호(CMDACK)는 도5를 참조하여 설명되며, 이 도는 도2의 개선된 디버그 포트(100)에서의 간략화된 커맨드 통과를 도시한다. 다시, 목표 시스템(T)을 DEBUG 모드에 놓기 위해서, DEBUG 명령은 단계(502)에서 TAP 제어기(204)에 기록된다. 제어는 단계(504)로 이동하고 그리고 커맨드 인지 신호(CMDACK)는 커맨드 완성 상태를 결정하기 위해서 호스트 시스템(H)에 의해 감시된다. 이 신호는 목표 시스템(T)에 의해 커맨드 종료 플래그와 동시에 하이(high)로 어서트되어 다음 시프트 사이클이 시작할 때까지 하이로 남아 있는다. 커맨드 인지 신호(CMDACK)를 이용할 시, 커맨드 종료 플래그 상태를 포획하기 위해서 JTAG 명령 레지스터를 시프트 아웃(shift out)할 필요가 없다. 커맨드 인지 신호(CMDACK)는 커맨드 종료 플래그가 0에서 1로 변한 후에 시험 클럭 신호(TCK)의 다음 상승 에지에서 하이로 변한다. 개선된 JTAG 신호를 이용할 시, 새로운 시프트 시퀀스(단계(506))는 커맨드 인지 신호(CMDACK) 핀이 하이로 어서트될 때까지 호스트 시스템(H)에 의해 시작되지 않을 것이다. 커맨드 인지 신호(CMDACK)는 시험 클럭 신호(TCK)와 동기이다. 시험 클럭 신호(TCK)는 모든 시간들에 클럭될 필요는 없지만, 이상적으로 커맨드 인지 신호(CMDACK) 응답을 기다릴 시 연속적으로 클럭된다.
디버그 포트(100)를 경유하는 운용체재/응용 통신
또한 디버그 레지스터 블록(210)에 포함된 것은 명령 트레이스 구성 레지스터 (ITCR)다. 이 32비트 레지스터는 명령 트레이스 디버그 함수들의 인에이블링/디스에이블링 및 구성을 제공한다. 다수의 그러한 기능들은 여러개의 트레이싱 레벨, 트레이스 동기화화 강제 카운트, 트레이스 초기화, 명령 트레이싱 모드들, 클럭 분할기 비율 정보 뿐만아니라, 아래 테이블에 도시된 부가적인 기능들을 포함하는 것으로 고려된다. ITCR은 디버그 레지스터 블록(210)의 다른 레지스터들의 경우처럼 JTAG 명령 레지스터 기록/판독 커맨드를 통해, 또는 예약 명령에 의해 엑세스된다.
비트 기호 설명 / 기능
31:30 Reserved 지정된
29 RXINTEN RX 비트가 설정될 시 인터럽트를 인에이블한다
28 TXINTEN TX 비트가 설정될 시 인터럽트를 인에이블한다
27 TX 목표 시스템(T)이 데이터를 호스트 시스템(H)에 전송할 준비를 하고 그리고 데이터가 TX_DATA 레지스터에서 이용될 수 있는 것을 가리킨다
26 RX 데이터가 호스트로부터 수신되어서 RX_DATA 레지스터에 배치됐음을 나타낸다
25 DISL1TR 레벨 1 트레이싱을 디스에이블한다
24 DISL0TR 레벨 0 트레이싱을 디스에이블한다
23 DISCSB 현 세그먼트 베이스 트레이스 기록을 디스에이블한다
22:16 TSYNC[6:0] 동기화화 어드레스 기록이 강제되기 전에 트레이스 제어 블록(218)이 출력할 수 있는 분기 시퀀스 트레이스 기록들의 최대 수를 설정한다
15 TSR3 DR3 트랩상에 트레이스 모드를 설정 또는 제거한다
14 TSR2 DR2 트랩상에 트레이스 모드를 설정 또는 제거한다
13 TSR1 DR1 트랩상에 트레이스 모드를 설정 또는 제거한다
12 TSR0 DR0 트랩상에 트레이스 모드를 설정 또는 제거한다
11 TRACE3 DR3를 이용하는 트레이스 모드 토글링을 인에이블한다
10 TRACE2 DR2를 이용하는 트레이스 모드 토글링을 인에이블한다
9 TRACE1 DR1을 이용하는 트레이스 모드 토글링을 인에이블한다
8 TRACE0 DR0을 이용하는 트레이스 모드 토글링을 인에이블한다
7 TRON 트레이스 온/오프
6:4 TCLK[2:0] 내부 프로세서 클럭과 TRACECLK간의 인코딩된 분할기 비율
3 ITM 내부 또는 외부(본드-아웃) 명령 트레이싱 모드를 설정한다
2 TINIT 트레이스 초기화
1 TRIGEN DCSR에서 디버그 트랩 인에이블 함수를 제외한 어떤 리거시(legacy) 디버그 정지점을 수신한 다음에 외부 트리거 신호(TRIG)의 펄스를 보내도록 인에이블한다
0 GTEN 내부 트레이스 버퍼를 통해 또는 외부 (본드-아웃)인터페이스를 경유하는 명령 트레이싱을 위한 전체적인 인에이블
명령 트레이스 구성 레지스터(ITCR)
또 다른 디버그 레지스터인 디버그 제어/상태 레지스터(DCSR)는 프로세서(104)가 디버그 모드를 등록하여 프로세서(104)를 개선된 JTAG 인터페이스를 통해 강제로 DEBUG 모드로 들어가게 하는 지시를 제공한다. 아래 테이블에 보여진 것처럼, DCSR은 또한 준비 신호를 프로세서(104)에게 강요하고, 디버그 포트를 통해 초기화된 액세스들을 위해서 메모리 액세스 공간을 제어하고, DEBUG 모드로 등록하자 마자 캐시 플러시(flush)를 디스에이블하고, TX 및 RX 비트들, 병렬 포트(214) 인에이블, 강제 중단들, 강제된 전체적인 리셋, 및 다른 기능들과 같은 여러 가지의 제어 특성들을 인에이블한다. 여러 비트들의 순서화 또는 실재가 ITCR 또는 DCSR인 것은 본 발명의 동작에 중요한 것으로 고려되지 않는다.
비트 기호 설명 / 기능
31:12 Reserved 지정된
11 TX 목표 시스템(T)이 데이터를 호스트 시스템(H)에 전송할 준비를 하고 그리고 데이터가 TX_DATA 레지스터에서 이용될 수 있음을 가리킨다
10 RX 데이터가 호스트로부터 수신되어 RX_DATA 레지스터에 배치됐음을 가리킨다
9 DISLUSH DEBUG 모드로 등록하자 마자 캐시 플로시를 디스에이블한다
8 SMMSP 디버그 포트(100)를 통해 시작된 액세스를 위해서 메모리 액세스 공간을 제어한다
7 STOP 프로세서(104)가 (전송 신호(STOPTX)를 정지시키는 것과 등가인)DEBUG 모드인지 아닌지를 나타낸다
6 FRCRDY 준비 신호(RDY)를 프로세서(104)에 강요하여 한 프로세서 클럭을 위해 펄스가 발생되게하고; 프로세서(104)가 무응답 장치로부터 준비 신호를 기다리며 동작되지 않꼬 있을 시 유용하다
5 BRKMODE 중단 요청/트레이스 포획 신호(BRTC)(중단 요청 또는 트레이스 포획 온/오프) 함수를 선택한다
4 DBTEN 프로세서(104) 레지스터들(DR0-DR7) 또는 다른 리거시 디버그 트랩/폴트 메커니즘에 의해 디버그 모드 또는 토글 트레이스 모드 인에이블을 트랩/폴트상에 등록하도록 인에이블한다.
3 PARENB 병렬 포트(214)를 인에이블한다
2 DSPC 정지 허가 상태에서 내부 프로세서 클럭의 정지를 디스에이블한다
1 FBRK (외부 BRTC 핀에 펄스를 보내는 것과 등가인)다음 명령 경계에서 프로세서(104)를 강제로 DEBUG 모드로 한다
0 FRESET 전체적인 재설정을 강요한다
디버그 제어/상태 레지스터(DCSR)
도1과 같은 교차 디버그 환경에 있을 시에, 목표 시스템(T)상에서 가동하는 패어런트(parent) 태스크는 정보를 제어하는 호스트 플랫폼(platform)에 정보를 보내는 것이 필요하다. 이 데이터는, 예컨대 printf() 호출로부터의 문자 스트림이나 또는 태스크 제어 블록(TCB)으로부터의 레지스터 정보로 구성될 것이다. 데이터를 전달하기 위한 하나의 계획된 방법은 운영체제가 데이터를 공지된 영역에 배치시킨 다음, 트랩 명령에 의해 DEBUG 모드가 등록되게 하는 것이다.
디버그 포트(100) 커맨드들에 의해, 호스트 시스템(H)은 DEBUG 모드가 등록된 이유를 결정하여, 지정된 영역으로부터 데이터를 검색하여 응답할 수 있다. 그러나, 프로세서(104)가 DEBUG 모드에 있는 동안, 정상적인 프로세서 실행이 정지된다. 전술된 것처럼, 이것은 많은 실시간 시스템들에게 바람직하지 않다.
이러한 상황은 본 발명에 따라 데이터를 전송(TX_DATA 레지스터) 및 수신(RX_DATA 레지스터)하기 위해서 2개의 디버그 레지스터를 디버그 포트(100)내에 제공하여 어드레스된다. 이들 레지스터들은 소프트 어드레스 및 JTAG 명령 레지스터 커맨드들을 이용하여 액세스될 수 있다. 전술된 것처럼, 호스트 시스템(H)이 디버그 명령을 JTAG 명령 레지스터에 기록한 후에, 직렬 디버그 시프터(212)는 시험 데이터 입력 신호(TDI) 및 시험 데이터 출력 신호(TDO) 선로에 연결된다.
프로세서(104)가 데이터를 전송하게하는 코드를 실행할 시, 제일 처음 ITCR내 TX 비트를 시험한다. TX비트가 0으로 설정되는 경우, 프로세서(104)는 데이터를 TX_DATA 레지스터에 전달하라는 프로세서 명령(메모리 또는 I/O 기록)을 실행한다. 디버그 포트(100)는 TX 비트를 DCSR 및 ITCR에 설정하여 데이터 전송을 준비하는 호스트 시스템(H)을 지시한다. 또한, STOPTX 핀은 하이로 설정된다. 호스트 시스템(H)이 TX_DATA 레지스터로부터의 전송 데이터를 판독한 후에, TX 비트는 0으로 설정된다. ITCR 내의 TXINTEN 비트는 프로세서(104)를 인터럽트하라는 신호를 생성하도록 설정된다. 이 인터럽트은 ITCR내의 TX 비트가 0으로 변경될 시만 생성된다. TXINTEN 비트가 설정되지 않을 시, 프로세서(104)는 데이터를 더 전송하도록 TX 비트의 상태를 결정하기 위해서 ITCR을 폴링(polling)한다.
호스트 시스템(H)이 데이터 전송을 원할 시, 호스트 시스템(H)은 처음에 ITCR 내의 RX 비트를 시험한다. RX 비트가 0으로 설정되는 경우, 호스트 시스템(H)은 데이터를 RX_DATA 레지스터에 기록하고 그리고 RX 비트는 DCSR 및 ITCR 내에서 1로 설정된다. RXINT 비트가 프로세서(104)를 인터럽트하라는 신호를 생성하기 위해서 ITCR내에 설정된다. 이 인터럽트는 ITCR 내의 RX가 1로 변경될 시만 생성된다. RXINTEN 비트가 설정되지 않을 시, 프로세서(104)는 RX 비트의 상태를 검증하기 위해서 ITCR을 폴링한다. RX 비트가 1로 설정되는 경우, 프로세서 명령은 RX_DATA 레지스터로부터 데이터를 판독하도록 실행된다. 데이터가 프로세서(104)에 의해 RX_DATA 레지스터로부터 판독된 후에, RX 비트는 0으로 설정된다. 호스트 시스템(H)은 데이터를 더 전달하도록 RX 비트의 상태를 결정하기 위해서 ITCR을 연속적으로 판독한다.
이 기술은 프로세서(104) 실행을 정지시키지 않고도 호스트 시스템(H)과 통신하도록 운영체제 또는 응용을 인에이블한다. 통신은 필요에 따라 온칩 응용 자원들에 최소한의 영향을 주는 디버그 포트(100)를 경유하여 이루어진다. 몇몇 경우에 시스템 인터럽트들을 디스에이블하는 것이 필요하다. 이것은 RX 및 TX 비트들이 프로세서 (100)에 의해 검사될 것을 요구한다. 이런 상황에서, 통신 링크는 폴링된 모드에서 구동된다.
디버그 포트(100)로의 병렬 인터페이스
몇몇 내장형 시스템들은 I/O 및 데이터 프로세싱 동작들을 지속하는 동안 명령 트레이스가 검사될 것을 요구한다. 멀티태스킹 운영체제를 이용하지 않기 때문에, 내장형 프로세서 장치(102)의 본드-아웃 버전은 디버그 포트(100)에 의해 트레이스 캐시(200)를 검사하는 일이 프로세서(104)가 중단될 것을 필요로하기 때문에, 트레이스 데이터를 제공하는 것이 바람직하다.
본 발명의 발표된 실시예에서, 병렬 포트(214)는 또한 병렬 커맨드 및 디버그 포트(100)로의 데이터 액세스를 제공하기 위해서 내장형 프로세서 장치(102)의 선택적인 본드-아웃 버전에 제공된다. 이 인터페이스는 트레이스 패드 인터페이스 포트(220)와 함께 다중화되는 16비트 데이터 경로를 제공한다. 특히, 병렬 포트 (214)는 16비트의 넓은 양방향 데이터 버스(PDATA[15:0]), 3비트의 어드레스 버스 (PADR[2:0]), 병렬 디버그 포트 판독/기록 선택 신호(PRW), 트레이스 유효 신호 (TV) 및 명령 트레이스 기록 출력 클럭(TRACECLOCK(TC))을 제공한다. 트레이스 패드 인터페이스 포트(220)와 공유되지 않았음에도 불구하고, (도시되지 않은)병렬 버스 요청/허가 신호 쌍(PBREQ/PBGNT)이 또한 제공된다. 병렬 포트(214)는 비트를 DCSR내에 설정하여 인에이블된다. 디버그 포트(100)를 경유하는 직렬 통신은 병렬 포트(214)가 인에이블될 시 디스에이블되지 않는다.
병렬 포트(214)는 주로 목표 시스템(T) 메모리로 및 이 메모리로부터 빠른 다운로드(download)/업로드(upload)를 위한 것이다. 그러나, 병렬 포트(214)는 프로세서 (104)가 정지될 때마다 목표 시스템(T)과의 모든 디버그 통신을 위해 이용될 것이다. (표준 또는 개선된)직렬 디버그 신호들은 프로세서(104)가 명령을 실행할 시 목표 시스템(T)으로의 디버그 액세스를 위해 이용된다.
JTAG 표준과 유사한 방식으로, 병렬 포트(214)로의 모든 입력들이 시험 클럭 신호(TCK)의 상승 에지에서 샘플링되고, 모든 출력들은 시험 클럭 신호(TCK)의 하강 에지에서 변경된다. 발표된 실시예에서, 병렬 포트(214)는 프로세서(104)가 정지되어 트레이스 패드 인터페이스(220)가 공유된 버스로부터 연결이 끝어지는 동안에만 병렬 커맨드들이 시작될 것을 요구하기 때문에 트레이스 패드 인터페이스 (220)와 핀들을 공유한다.
병렬 버스 요청 신호(PBREQ) 및 병렬 버스 허가 신호(PBGNT)가 트레이스 캐시(200)와 병렬 포트(214)간에 공유된 버스 신호들의 다중화를 신속히 처리하도록 제공된다. 병렬 포트(214)와의 호스트 인터페이스가 병렬 버스 요청 신호(PBREQ)가 어서트될 것을 결정할 시, 호스트 인터페이스는 병렬 포트(214) 신호들을 구동하기 시작하여 병렬 버스 허가 신호(PBGNT)를 어서트한다.
인에이블된 병렬 포트(214)를 가지고 DEBUG 모드로 들어가거나 또는 이 모드를 벗어날 시, 병렬 포트(214)는 프로세서 상태 저장 및 복원 주기 동안 이용된다. 병렬 버스 요청 신호(PBREQ)는 DEBUG 모드의 등록에 대한 저장 상태 시퀀스의 두번째 음절을 시작하기 바로 전에 어서트된다. 마지막 복원 상채 주기상에서, 병렬 버스 요청 신호(PBREQ)는 기록 데이터를 래치(latch)한 후에 디어서트된다. 병렬 포트 (214) 호스트 인터페이스는 그것의 병렬 포트 구동기화들을 3 상태로 하여 병렬 버스 허가 신호(PBGNT)를 디어서트하여 병렬 버스 요청 신호(PBREQ) 디어서션에 응답한다. 그다음, 병렬 포트(214)는 디버그 트레이스 포트 핀 구동기화들을 인에이블하고, 마지막 복원 상태 주기를 완성하고, 커맨드 인지 신호(CMDACK)를 어서트하고, 그리고 트레이스 제어 로직(218)으로의 인터페이스 제어를 귀환시킨다.
병렬 포트(214)를 경유하여 통신할 시, 어드레스 핀들(PADR[2:0])은 JTAG 명령 레지스터의 필드 선택을 위해 이용되며, 이것은 아래 테이블에 도시된 것처럼 16비트 데이터 버스(PDATA[15:0])로 맵핑(mapping)된다.
PADR[2:0] 데이터 선택
0 선택 없음(널(null) 동작)
1 4비트 커맨드 레지스터; PDATA[3:0]상에 구동된 커맨드
10 상위 16비트의 debug_data
11 하위 16비트의 debug_data
100 - 111 지정된
절반들중 단지 하나만이 이용되는 경우(예컨대, 8비트 I/O 주기 데이터 기록) debug_data[31:0] 레지스터의 양쪽 절반들을 갱신할 필요가 없다. 커맨드 계류 플래그는 기록 동작을 4비트 커맨드 레지스터에 실행할 시 자동으로 설정되고, 커맨드 종료 플래그가 어서트될 시 소거된다. 호스트 시스템(H)은 종료 플래그가 어서트되는 순간을 결정하기 위해서 커맨드 인지 신호(CMDACK)를 감시할 수 있다. 병렬 포트(214) 이용은 프로세서 코어(104)를 감속할 필요없이 실행 이력의 충분한 가시성을 제공한다. 트레이스 캐시(200)는, 필요한 경우 소정의 대역폭 정합 문제를 완화하기 위해서 병렬 포트(214)에 대한 버퍼로서 이용되도록 구성될 수 있다.
운영체제 및 디버거 통합
본 발명의 발표된 실시예에서, 트레이스 캐시(200)를 포함하는 모든 디버그 지원 특성들의 동작은 디버그 포트(100)를 통하여 또는 프로세서 명령들에 의해 제어될 수 있다. 이들 프로세서 명령들은 감시 프로그램, 목표 호스트 디버거나, 또는 통상적인 파드-웨어(pod-wear)로부터 온 것일 수 있다. 디버그 포트(100)는 프로세서 명령들보다는 직렬 데이터 포트 커맨드들에 의해 시작되는 데이터 이동을 실행한다.
통상적인 파드-스페이스(pod-space)로부터의 프로세서 동작은 DEBUG 모드에서 감시 프로그램으로부터의 동작과 매우 유사하다. 모든 디버그 동작들은 프로세서 명령들에 의해 제어될 수 있다. 이들 명령들이 파드-스페이스로부터 왔든 또는 보통 메모리로부터 왔든 전혀 차이가 없다. 이것은 부가적인 디버그 능력을 포함하도록 운영체제가 확장되도록 인에이블한다.
물론, 특권이 주어진 시스템 호출인 그러한 ptrace()에 의해, 운영체제들은 디버거들을 오랫동안 지지해왔다. 그러나, 온칩 트레이스 캐시(200)의 합체는 명령 트레이스 능력을 제공하기 위해서 운영체제를 인에이블한다. 트레이스할 능력은 종종 실시간 응용에서 중요한 것으로 고려된다. 본 발명을 따르는 디버그 환경에서, "외부" 로직 에널라이저 또는 내부 회로 에뮬레이터를 합체하지 않고도 한정된 트레이스를 지원하기 위해서 운영체제를 개선하는 것이 가능하다.
내부 적재 및 트레이스 캐시(200) 내용들의 검색을 지원하는데 이용된 명령 예제들은 적재 명령 트레이스 캐시 기록 커맨드(LITCR) 및 저장 명령 트레이스 캐시 기록 커맨드(SITCR)를 포함한다. 커맨드(LITCR)는 프로세서 코어(104)의 EAX 레지스터 내용들과 함께 트레이스 캐시 포인터(ITREC.PTR)가 명기한데로 지표(index) 기록을 트레이스 캐시(200)내에 로드한다. 트레이스 캐시 포인터(ITREC.PTR)는 미리 증가되어, 커맨드(LITCR)의 일반적인 동작은 아래와 같다.
ITREC.PTR <_ ITREC.PTR + 1
ITREC[ITREC.PTR] <_ EAX
명령 트레이스 기록(아래 트레이스 기록 포맷의 설명 참조)이 EAX 기록보다 작은 경우에, EAX 레지스터의 일부분만이 이용된다.
유사하게, 저장 명령 트레이스 캐시 기록 커맨드(SITCR)는 지표 기록을 트레이스 캐시(200)로부터 검색하여 (EAX 레지스터내에)저장하는데 이용된다. 프로세서 코어 (104)의 ECX 레지스터 내용들은 지표를 트레이스 캐시(200)내에 생성하기 위해서 트레이스 캐시 포인터(ITREC.PTR)에 부가되는 오프셋으로 이용된다. ECX 레지스터는 후에 증가되고, 그 동안 트레이스 캐시 포인터(ITREC.PTR)는 영향을 받지 않게 되어 다음과 같이 된다.
EAX <_ ITREC[ECX + ITREC.PTR]
ECX <_ ECX + 1
LITCR 및 SITCR 커맨드들의 포맷에 대한 여러 변형들은 당업자들에게 명백해질 것이다.
운영체제가 온칩 트레이스를 지원하도록 확장함으로서 통신산업내에 어떤 이점들을 갖게된다. 태스크가 트레이스되는 동안 시스템 I/O 및 통신 활동이 유지되도록 인에이블한다. 통상적으로, 내부 회로 에뮬레이터의 사용은 프로세서의 상태와 트레이스가 (ptrace()와는 달리)검사되기 전에 프로세서가 정지될 것을 요구한다. 이것이 I/O 데이터 프로세싱의 연속적인 지원을 방해한다.
부가적으로, 트레이스 캐시(200)는 그 분야의 장비와 함께 이용될 시 매우 유용하다. 예기치 않은 시스템 충돌이 발생할 경우, 트레이스 캐시(200)는 충돌 사건에 이르기까지의 실행 이력을 관찰하도록 검사될 수 있다. 전력 소모가 관심사항 중 하나인 휴대용 시스템들 또는 다른 환경들에 사용될 시, 트레이스 캐시(200)는 전력 관리 회로에 의해 필요에 따라 디스에이블될 수 있다.
모범적인 트레이스 기록 포맷
본 발명의 발표된 실시예에서, 명령 트레이스 기록은 20비트 넓이이고 그리고 유효 비트 V 뿐만아니라 2개의 필드인 TCODE(트레이스 코드) 및 TDATA(트레이스 데이터)로 구성된다. TCODE 필드는 TDATA 필드에서 데이터 유형을 식별하는 코드다. TDATA 필드는 디버그 목적을 위해 사용되는 소프트웨어 트레이스 정보를 포함한다.
본 발명의 한 계획된 실시예에서, 내장형 프로세서 장치(102)는 아래 테이블에 보여진것 처럼 11개의 서로 다른 트레이스 코드들을 보고한다.
TCODE # TCODE 유형 TDATA
0 분실된 트레이스 유효하지 않은
1 조건 분기 분기 시퀀스를 포함한다
10 분기 목표 분기 목표 어드레스를 포함한다
11 이전 세그먼트 베이스 이전 세그먼트 베이스 어드레스 및 속성들을 포함한다
100 현 세그먼트 베이스 현 세그먼트 베이스 어드레스 및 속성들을 포함한다
101 인터럽트 예외 또는 인터럽트의 벡터 번호를 포함한다
110 트레이스 동기화화 가장 최근 실행된 명령의 어드레스를 포함한다
111 복수의 트레이스 복수의 기록들을 갖는 엔트리의 제2 또는 제3 기록을 포함한다
1000 트레이스 정지 트레이스 포획이 정지된 명령 어드레스를 포함한다
1001 유저 트레이스 유저가 지정한 트레이스 데이터를 포함한다
1010 성능 윤곽 성능 윤곽 데이터를 포함한다
트레이스 캐시(200)는 한정된 저장 용량을 갖으므로, 따라서 포획된 트레이스 데이터에서 어느 정도의 "압축"은 바람직하다. 트레이스 데이터를 포획할 시에, 아래 토론은 트레이스되는 프로그램의 이미지가 호스트 시스템(H)에 이용될 수 있다고 가정한다. 어드레스가 프로그램 이미지(목적 모듈)로부터 획득될 수 있는 경우, 어드레스는 트레이스 데이터에 제공되지 않는다. 바람직하게는, 명령 흐름을 방해하는 명령들만이 보고되고; 더욱이, 목표 어드레스가 어떤 방법으로든 데이터에 의존하는 명령들만이 보고된다. 예를 들면, 그러한 "방해" 사건들은 목표 어드레스가 데이터 레지스터 또는 스택과 같은 다른 메로리 위치로부터 제공되는 호출 명령들 또는 비조건 분기 명령들을 포함한다.
이전 테이블에 나타내어진 것처럼, 다른 원하는 트레이스 정보는 트랩 또는 인터럽트 핸들러의 목표 어드레스; 귀환 명령의 목표 어드레스; 데이터 레지스터에 의존하는(그렇지 않은 경우, 필요한 모든 것은 분기가 취해지느냐 아니냐를 나타내는 1비트 트레이스다) 목표 어드레스를 갖는 조건 분기 명령; 그리고 가장 빈번하게는 절차 귀환들로부터의 어드레스들을 포함한다. 태스크 식별기들 및 트레이스 포획 정지/시작 정보와 같은 다른 정보는 또한 트레이스 캐시(200)내에 배치될 수 있다. 정확한 내용들 및 트레이스 기록들의 성질은 본 발명에 중요한 것으로 고려되지 않는다.
도6A는 조건 분기 사건들을 보고하기 위한 모범적인 포맷을 설명한다. 본 발명의 발표된 실시예에서, 15개의 분기 사건들까지의 결과가 단일 트레이스 엔트리로 집단화될 수 있다. 16 비트 TDATA 필드(또는 "BFIELD")는 1비트 분기 결과 트레이스 엔트리들을 포함하고, TCODE=0001 엔트리처럼 라벨이 붙는다. TDATA 필드는 1로 설정되는 가장 왼쪽 비트를 제외하고는 초기에 클리어된다. 각각의 새로운 조건 분기를 만나는 경우, 새로운 1비트 엔트리가 왼쪽에 부가되어 소정의 다른 엔트리들이 1비트씩 오른쪽으로 이동된다.
128 엔트리 트레이스 캐시(200)를 이용함으로서 320바이트의 정보가 저장되게 한다. 6개의 명령들마다 한 분기의 분기 주파수를 가정하면, 발표된 트레이스 캐시(200)는 따라서 1536개 명령들의 유효 트레이스 기록을 제공한다. 이 개산은 호출, 점프 및 귀환 명령들의 발생을 고려하지 않는다.
본 발명의 발표된 실시예에서, 트레이스 제어 로직(218)은 프로세서 인터페이스 로직(202)에 의해 명령 실행을 감시한다. 분기 목표 어드레스가 보고되어야 할 시, 현재의 조건 분기 TDATA 필드내에 포함된 정보는 15개의 엔트리들이 누적되지 않았음에도 불구하고 트레이스 제어 로직(218)에 의해 완성된 것으로서 표기된다. 도6B에 도시된 것처럼, (32비트 어드레스를 이용하는 프로세서 장치(102)에서)목표 어드레스는 목표 어드레스의 상위 16비트들을 제공하는 제1 엔트리(TCODE=0010) 및 목표 어드레스의 하위 16비트들을 제공하는 제2 엔트리 (TCODE=0111)를 갖는 트레이스 엔트리 쌍내에 기록된다. 분기 목표 어드레스가 조건 점프 명령을 위해 제공될 시, 어떤 1비트 분기 결과 트레이스 엔트리도 보고된 분기를 위해 나타나지 않는다.
시작 및 정지 트레이스 포획
도6C를 참조하여, 프로그램 실행의 어떤 부분동안 트레이스 수집(gathering)을 시작 및 정지시키는 것은 바람직할 것이다; 예를 들면, 태스크 문맥 교환이 발생할 시. 트레이스 포획이 정지될 시, 어떤 트레이스 엔트리들도 트레이스 캐시(200)내에 입력되지 않고, 또한 트레이스 포트(214)의 본드-아웃 핀들상에 어떤 것들도 나타나지 않는다. 트레이스 포획을 인에이블 및 디스에이블하기 위해 다른 방법들이 모색된다. 예를 들면, x86 커맨드가 제공될 수 있고, 또는 현재의 x86 커맨드가 I/O 포트 위치에서 비트를 토글하도록 이용될 수 있다. 대안으로, (도시되지 않은)온칩 정지점 제어 레지스터들은 트레이스 포획이 시작/정지될 어드레스를 나타내도록 구성될 수 있다. 트레이싱이 중단될 시, 최종 트레이스 어드레스를 기록하는 트레이스 엔트리(TCODE=1000, TCODE=0111)가 트레이스 스트림에 배치될 수 있다. 트레이싱이 다시 시작될 시, 현 실행 명령의 어드레스를 포함하는 트레이스 동기화화 엔트리 (TCODE=0110, TCODE=0111)가 생성된다.
트레이싱이 정지되는 동안 발생하는 세그먼트 변경을 설명하는 것은 중요하다. 이같은 상황은 도6C에 도시된 것처럼 현 세그먼트 베이스 어드레스 엔트리(TCODE=0100, TCODE=0111)를 TCODE=1000 엔트리 바로 다음에 오도록 옵션을 선택하여 부분적으로 해결될 수 있다. 구성 옵션은 또한 디버그 모드로 들어가기에 앞서 트레이스 끝에서 현 세그먼트 베이스 어드레스 엔트리를 인에이블하는 것이 바람직하다. 대조적으로, 인터럽트이 발생했던 순간과 같이 베이스가 변경되지 않았을 시 세그먼트 베이스 정보를 제공하는 것은 바람직하지 않을 것이다.
도6D를 참조하여, 인터럽트이나 트랩과 같은 비동기화 또는 동기화 사건 발생 후에, TCODE=0101 트레이스 엔트리가 목표 인터럽트 핸들러의 어드레스를 제공하기 위해서 생성된다. 그러나, 인터럽트 엔트리 바로 이전의 트레이스 동기화화(TCODE=0110) 엔트리 뿐만 아니라 이전 세그먼트 베이스 어드레스(TCODE=0011)를 생성하여 인터럽트이 발생됐던 명령 어드레스를 기록하는 것은 또한 바람직하다. 트레이스 동기화 엔트리는 인터럽트 핸들러가 시작하기 전에 물러난 최종 명령 어드레스를 포함한다.
세그먼트 변경
도6E는 세그먼트 매개변수들의 변경을 보고하는데 이용되는 트레이스 엔트리를 설명한다. 본 발명을 따르는 트레이스 스트림을 처리할 시, 트레이스 어드레스 값들은 명령의 선형 어드레스를 결정하기 위해서 세그먼트 베이스 어드레스와 결합된다. 베이스 어드레스 뿐만아니라 디폴트(default) 데이터 피연산자 크기(32 또는 16비트 모드)는 변하기 쉽다. 결과적으로, TCODE=0011 및 0111 엔트리들은 명령 흐름을 정확히 재구성하데 필요한 정보를 제공하도록 구성된다. TCODE=0011 엔트리에 대응하는 TDATA 필드는 이전 세그먼트 베이스 어드레스의 상위 16비트들을 포함하지만, 관련 TCODE=0111 엔트리는 (명령이 리얼(real) 모드 또는 보호 모드로 실행되었느냐에 따라)하위 15 또는 14 비트들을 포함한다. TCODE=0111 엔트리는 바람직하게는 현 세그먼트 크기(32비트 또는 16비트)와 동작 모드(리얼 모드 또는 보호 모드)를 나타내는 비트들과, 그리고 페이징(paging)이 이용되는지를 나타내는 비트를 포함한다. 세그먼트 정보는 일반적으로 현(목표) 세그먼트가 아니라 이전 세그먼트에 관한 것이다. 현 세그먼트 정보는 프로세서 코어(104)의 상태를 정지시켜 검사함으로서 획득된다.
유저가 명기한 트레이스 엔트리
응용 프로그램이나 운영체제가 부가적인 정보를 트레이스 스트림에 부가하기를 바라는 상황이 존재한다. 이러한 상황이 발생하는 경우에, 바람직하게는 원하는 실행 위치에서 16비트 데이터 값이 트레이스 스트림내에 배치되도록 인에이블하는 x86 명령이 제공된다. 이 명령은 메모리 또는 레지스터가 제공하는 피연산자와 함께 I/O 스페이스로 이동함으로서 실행될 수 있다. 프로세서 코어(104)가 이 명령을 실행할 시, 유저가 명기한 트레이스 엔트리는 트레이스 제어 로직(218)에 의해 포획되어 트레이스 캐시(200)내에 배치된다. 도6F에 도시된 것처럼, TCODE=1001 엔트리는 본 발명의 발표된 실시예에서 이러한 목적을 위해 사용된다. 이 엔트리는, 예컨대 태스크 교환이 멀티태스킹 운영체제에서 발생할 시 이전 또는 현 태스크 식별기를 제공할 것이다.
트레이스 데이터의 동기화
본 발명의 발표된 실시예를 따르는 프로세서 기반 장치(102)상에서 통상적인 소프트웨어를 실행할 시, 거의 어떤 트레이스 엔트리들도 어드레스 값들을 포함하지 않는다. 대부분의 엔트리들은 TCDOE=0001 포맷을 갖고, 여기에서 단일 비트는 조건 동작 결과를 나타낸다. 그러나, 트레이스 스트림을 검사할 시, 데이터는 공지된 프로그램 어드레스에 관하여만 조사될 수 있다. 예를 들면, 트레이스 캐시(200)내의 가장 오래된 엔트리로 시작하여, 어드레스 엔트리가 거의 이용되지 않을 때까지 모든 엔트리들에 대해서 계속된다. 알고리즘 동기화는 통상적으로 목표 어드레스를 제공하는 트레이스 엔트리로부터 시작한다.
트레이스 캐시(200)가 어드레스를 제공하는 어떤 엔트리들도 포함하지 않는 경우, 트레이스 분석은 발생할 수 없다. 이같은 상황은 드물지만; 그러나 가능하다. 이러한 이유로 해서, 동기화 레지스터(TSYNC)는 동기화 어드레스 정보의 주입을 제어하기 위해서 본 발명의 양호한 실시예에 제공된다. 동기화 레지스터(TSYNC)가 0으로 설정되는 경우, 트레이스 동기화 엔트리들은 발생되지 않는다.
도6G는 모범적인 트레이스 동기화 엔트리를 설명한다. 동작시, 카운터 레지스터는 목표 어드레스를 포함하는 트레이스 엔트리가 생성될 시 마다 동기화 레지스터(TSYNC)내에 포함된 값으로 설정된다. 이 카운터는 모든 다른 트레이스 엔트리들에 대해 1씩 감소된다. 카운터가 0에 도달하는 경우, 트레이스 엔트리는 가장 최근에 물러난 명령(또는 대안으로 계류 명령)의 어드레스를 포함하는 (TCODE=0110)에 삽입된다. 게다가, 동기화 엔트리가 트래이스 캐시(200)내에 기록될 시, 동기화 엔트리는 또한 완전한 기능의 ICE 장비를 위해 트레이스 데이터를 동기화시키는 충분한 능력을 보장하기 위해서 트레이스 핀들(220)상에 나타난다.
트레이스 엔트리 정보는 또한 코드 범위 또는 실행 성능과 관련된 데이터를 포함하도록 전개될 수 있다. 이같은 정보는, 예컨대 코드 시험 및 성능 조율에 대해 유용하다. 이같은 개선이 없을 지라도, 프로세서 코어(104)를 인에이블하여 트레이스 캐시(200)를 액세스하는 것은 바람직하다. 미소제어기 장치의 경우에, 이러한 특성은 트레이스 캐시(200)를 I/O나 메모리 공간내의 일부에 맵핑하여 성취될 수 있다. 보다 일반적인 접근법은 트레이스 캐시(200) 데이터를 시스템 메모리내로 이동하도록 지원하는 명령을 포함하는 것을 수반한다.
따라서, 명령 트레이스 정보를 제공하기 위해 융통성 있고 고성능의 해결책을 제공하는 프로세서 기반 장치가 설명됐다. 프로세서 기반 장치는 프로세서 동작을 정지시키지 않고 프로세서상에 명령 실행 흐름을 제구성하기 위해서 트레이스 정보를 제공할 수 있는 명령 트레이스 캐시를 합체한다. 직렬 및 병렬 통신 채널들은 트레이스 데이터를 외부 장치들에 전달하기 위해 제공된다. 발표된 온칩 명령 트레이스 캐시는 많은 현존하는 해결책들에서 발생하는 다수의 대역폭 및 클럭 동기화화 문제들을 완화시켜준다.
본 발명의 전술된 발표 및 설명은 예시적이고 모범적인 것이었고, 그리고 크기, 형태, 재료, 부품들, 회로 소자들, 선로 접속 및 접촉들 뿐만아니라 설명된 회로의 상세부분들 및 동작의 방법과 구성들의 여러가지 변형들이 본 발명의 정신으로부터 벗어나지 않고도 만들어 질 것이다.

Claims (12)

  1. 외부 소스들(106)로부터 획득된 일련의 명령들을 실행하며, 외부 도체들과 접속을 위한 핀들을 가지고 있는 전자 프로세서 기반 장치(102)로서,
    프로세스 코어(104)에 결합되어 명령들이 프로세서 코어에 의해 실행되는 순서를 나타내는 정보를 저장하며, 각각 트레이스 정보를 저장하도록 된 일련의 저장 소자들을 갖는 트레이스 캐시 (200)를 구비하고; 그리고
    상기 트레이스 캐시로부터 외부 장치들에 트레이스 정보의 전송을 제공하기 위해서, 상기 트레이스 캐시(200)와 상기 핀들중 선택된 핀들 사이에 접속되는 통신 채널 (230)을 구비하는 것을 특징으로 하는 전자 프로세서 기반 장치.
  2. 제 1 항에 있어서,
    상기 트레이스 캐시(200)는 선입선출(FIFO) 원형 캐시인 것을 특징으로 하는 전자 프로세서 기반 장치.
  3. 제 1 항에 있어서,
    상기 통신 채널(230)은 상기 트레이스 캐시(200)와 상기 핀들 중 선택된 핀들 사이의 병렬 인터페이스(214)를 구비하는 것을 특징으로 하는 전자 프로세서 기반 장치.
  4. 제 1 항에 있어서,
    상기 통신 채널(230)은 상기 트레이스 캐시(200)와 상기 핀들 중 선택된 핀들 사이의 직렬 인터페이스(204)를 구비하는 것을 특징으로 하는 전자 프로세서 기반 장치.
  5. 제 4 항에 있어서,
    상기 직렬 인터페이스(204)는 IEEE-1149.1-1990 JTAG 인터페이스 표준 또는 다른 유사한 표준을 따르는 것을 특징으로 하는 전자 프로세서 기반 장치.
  6. 제 1 항에 있어서,
    종속되는 데이터 레지스터가 아닌 목표 어드레스를 갖는 피실행 분기 명령들에 관한 정보가 단일 비트 형태로 상기 트레이스 캐시내에 저장되는 것을 특징으로 하는 전자 프로세서 기반 장치.
  7. 제 1 항에 있어서,
    상기 트레이스 캐시(200)가 트레이스 포획 시작/정지 정보를 제공하도록 구성되는 것을 특징으로 하는 전자 프로세서 기반 장치.
  8. 제 1 항에 있어서,
    상기 트레이스 캐시(200)가 동기화 엔트리를 주기적으로 포획하도록 구성되고, 상기 동기화 엔트리는 상기 프로세서 코어(104)에 의해 가장 최근에 실행된 명령의 어드레스인 것을 특징으로 하는 전자 프로세서 기반 장치.
  9. 제 1 항에 있어서,
    상기 트레이스 캐시(200)가 인터럽트 또는 예외 벡터 정보를 제공하도록 구성되는 것을 특징으로 하는 전자 프로세서 기반 장치.
  10. 제 1 항에 있어서,
    상기 트레이스 캐시(200)가 태스크 식별기 정보를 제공하도록 구성되는 것을 특징으로 하는 전자 프로세서 기반 장치.
  11. 제 1 항에 있어서,
    상기 트레이스 캐시(200)의 내용들이 운영체제에 의해 검색되는 것을 특징으로 하는 전자 프로세서 기반 장치.
  12. 일련의 명령들을 실행하는 프로세서 코어 (104)를 갖는 프로세서 기반 장치 (102)로 부터 외부 디버그 시스템(H)에 트레이스 정보를 제공하는 방법으로서,
    트레이스 캐시(200)를 상기 프로세서 기반 장치(102)내에 제공함과 아울러 상기 트레이스 캐시로 부터 상기 디버그 시스템 (H)로의 통신 채널 (230)을 제공하는 하는 단계를 구비하고, 상기 트레이스 캐시는 트레이스 정보를 저장하도록된 일련의 저장 소자들을 포함하며;
    상기 일련의 명령들이 상기 프로세서 코어 (104)에 의해 실행되는 순서를 표시하는 상기 트레이스 정보를 상기 프로세스 코어로 부터 포획하는 단계와;
    상기 트레이스 정보를 상기 트레이스 캐시 저장 소자들에 저장하는 단계와; 그리고
    상기 트레이스 정보를 상기 트레이스 캐시(200)로부터 상기 통신채널 (230)을 경유하여 상기 디버그 시스템(H)로 전달하는 단계를 구비하는 것을 특징으로 하는 트레이스 정보 제공 방법.
KR1019997009267A 1997-04-08 1998-04-07 마이크로프로세서 기반의 디바이스를 위한 트레이스 캐시 KR100546087B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US4307097P 1997-04-08 1997-04-08
US60/043,070 1997-04-08
US94989797A 1997-10-14 1997-10-14
US08/949,897 1997-10-14
PCT/US1998/006837 WO1998045783A1 (en) 1997-04-08 1998-04-07 Trace cache for a microprocessor-based device

Publications (2)

Publication Number Publication Date
KR20010006188A true KR20010006188A (ko) 2001-01-26
KR100546087B1 KR100546087B1 (ko) 2006-01-26

Family

ID=26720001

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997009267A KR100546087B1 (ko) 1997-04-08 1998-04-07 마이크로프로세서 기반의 디바이스를 위한 트레이스 캐시

Country Status (6)

Country Link
US (1) US6167536A (ko)
EP (1) EP0974094B1 (ko)
JP (1) JP2001519948A (ko)
KR (1) KR100546087B1 (ko)
DE (2) DE69830718T2 (ko)
WO (1) WO1998045783A1 (ko)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286114B1 (en) * 1997-10-27 2001-09-04 Altera Corporation Enhanced embedded logic analyzer
US6687865B1 (en) 1998-03-25 2004-02-03 On-Chip Technologies, Inc. On-chip service processor for test and debug of integrated circuits
JP3736980B2 (ja) * 1998-12-28 2006-01-18 富士通株式会社 マイクロコントローラの評価装置および評価方法
EP1039386A1 (en) * 1999-03-19 2000-09-27 Motorola, Inc. Computer system with trace unit, and method therefor
US6684348B1 (en) * 1999-10-01 2004-01-27 Hitachi, Ltd. Circuit for processing trace information
US6918065B1 (en) 1999-10-01 2005-07-12 Hitachi, Ltd. Method for compressing and decompressing trace information
US6732307B1 (en) 1999-10-01 2004-05-04 Hitachi, Ltd. Apparatus and method for storing trace information
ES2167190B2 (es) * 1999-12-20 2003-04-01 Univ Catalunya Politecnica Unidad de construccion de trazas
DE60100901T2 (de) 2000-04-11 2004-08-19 Analog Devices Inc., Norwood Verfahren und anordnung zum eingriffsfreien profilieren von anwendungsprogrammkoden
US6694427B1 (en) * 2000-04-20 2004-02-17 International Business Machines Corporation Method system and apparatus for instruction tracing with out of order processors
DE10100344A1 (de) * 2001-01-05 2002-07-25 Infineon Technologies Ag Integrierte Schaltung und Verfahren zum Herstellen einer integrierten Schaltung
US7260684B2 (en) * 2001-01-16 2007-08-21 Intel Corporation Trace cache filtering
US6988264B2 (en) * 2002-03-18 2006-01-17 International Business Machines Corporation Debugging multiple threads or processes
GB2389931B (en) * 2002-06-07 2005-12-14 Advanced Risc Mach Ltd Generation of trace elements within a data processing apparatus
GB2389432B (en) * 2002-06-07 2005-09-07 Advanced Risc Mach Ltd Instruction tracing in data processing systems
US7197671B2 (en) * 2002-06-07 2007-03-27 Arm Limited Generation of trace elements within a data processing apparatus
KR100423891B1 (ko) * 2002-06-21 2004-03-22 삼성전자주식회사 트레이스 모듈을 구비한 마이크로프로세서
WO2004036442A1 (fr) * 2002-10-15 2004-04-29 Stmicroelectronics S.A. Protocole de transmission de messages numeriques
US7496792B2 (en) * 2002-10-15 2009-02-24 Stmicroelectronics S.A. Repeat digital message transmission between a microprocessor monitoring circuit and an analyzing tool
US7831814B2 (en) * 2002-10-29 2010-11-09 Stmicroelectronics S.A. Monitoring a microprocessor programme by sending time-trackable messages
WO2004042576A1 (fr) * 2002-10-29 2004-05-21 Stmicroelectronics S.A. Transmission de messages numeriques generiques par un circuit de surveillance d'un microprocesseur
DE60238003D1 (de) * 2002-10-29 2010-11-25 St Microelectronics Sa Zeitkorrelation von, durch eine überwachungsschaltung eines mikroprozessors, übertragenen nachrichten
US20040117690A1 (en) * 2002-12-13 2004-06-17 Andersson Anders J. Method and apparatus for using a hardware disk controller for storing processor execution trace information on a storage device
US7149926B2 (en) * 2003-05-22 2006-12-12 Infineon Technologies Ag Configurable real-time trace port for embedded processors
US7133969B2 (en) * 2003-10-01 2006-11-07 Advanced Micro Devices, Inc. System and method for handling exceptional instructions in a trace cache based processor
US7555633B1 (en) 2003-11-03 2009-06-30 Advanced Micro Devices, Inc. Instruction cache prefetch based on trace cache eviction
US8069336B2 (en) 2003-12-03 2011-11-29 Globalfoundries Inc. Transitioning from instruction cache to trace cache on label boundaries
US7213126B1 (en) * 2004-01-12 2007-05-01 Advanced Micro Devices, Inc. Method and processor including logic for storing traces within a trace cache
US7404178B2 (en) 2004-02-18 2008-07-22 Hewlett-Packard Development Company, L.P. ROM-embedded debugging of computer
US7197630B1 (en) 2004-04-12 2007-03-27 Advanced Micro Devices, Inc. Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
JP2008523456A (ja) * 2004-05-12 2008-07-03 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ トレースコプロセッサを備えたデータ処理システム
US7365007B2 (en) * 2004-06-30 2008-04-29 Intel Corporation Interconnects with direct metalization and conductive polymer
US7555681B2 (en) * 2005-05-13 2009-06-30 Texas Instruments Incorporated Multi-port trace receiver
US20060273944A1 (en) * 2005-05-13 2006-12-07 Swoboda Gary L System With Trace Capability Accessed Through the Chip Being Traced
US20060277435A1 (en) * 2005-06-07 2006-12-07 Pedersen Frode M Mechanism for storing and extracting trace information using internal memory in microcontrollers
EP1922555B1 (en) * 2005-08-09 2014-10-08 Texas Instruments Incorporated Selectable jtag or trace access with data store and output
US7496771B2 (en) * 2005-11-15 2009-02-24 Mips Technologies, Inc. Processor accessing a scratch pad on-demand to reduce power consumption
US7873820B2 (en) * 2005-11-15 2011-01-18 Mips Technologies, Inc. Processor utilizing a loop buffer to reduce power consumption
US7562191B2 (en) * 2005-11-15 2009-07-14 Mips Technologies, Inc. Microprocessor having a power-saving instruction cache way predictor and instruction replacement scheme
JP4944518B2 (ja) * 2006-05-26 2012-06-06 富士通セミコンダクター株式会社 タスク遷移図表示方法及び表示装置
US20080215804A1 (en) * 2006-09-25 2008-09-04 Davis Gordon T Structure for register renaming in a microprocessor
US20080077778A1 (en) * 2006-09-25 2008-03-27 Davis Gordon T Method and Apparatus for Register Renaming in a Microprocessor
US7644233B2 (en) * 2006-10-04 2010-01-05 International Business Machines Corporation Apparatus and method for supporting simultaneous storage of trace and standard cache lines
US7610449B2 (en) * 2006-10-04 2009-10-27 International Business Machines Corporation Apparatus and method for saving power in a trace cache
US8386712B2 (en) * 2006-10-04 2013-02-26 International Business Machines Corporation Structure for supporting simultaneous storage of trace and standard cache lines
US7934081B2 (en) * 2006-10-05 2011-04-26 International Business Machines Corporation Apparatus and method for using branch prediction heuristics for determination of trace formation readiness
US20080250206A1 (en) * 2006-10-05 2008-10-09 Davis Gordon T Structure for using branch prediction heuristics for determination of trace formation readiness
US20080114964A1 (en) * 2006-11-14 2008-05-15 Davis Gordon T Apparatus and Method for Cache Maintenance
US20080250207A1 (en) * 2006-11-14 2008-10-09 Davis Gordon T Design structure for cache maintenance
US20080235500A1 (en) * 2006-11-21 2008-09-25 Davis Gordon T Structure for instruction cache trace formation
US20080120468A1 (en) * 2006-11-21 2008-05-22 Davis Gordon T Instruction Cache Trace Formation
US7707462B1 (en) * 2007-04-24 2010-04-27 Netapp, Inc. Non-disruptive generation of core files without reboot
US7698598B1 (en) * 2007-04-24 2010-04-13 Netapp, Inc. Automatic generation of core files and automatic generation of support information with generation of core files
US20090070745A1 (en) * 2007-09-04 2009-03-12 Mark Everly System and corresponding method for testing software embedded in an electronic device
US7802142B2 (en) * 2007-12-06 2010-09-21 Seagate Technology Llc High speed serial trace protocol for device debug
US8667476B1 (en) 2009-01-20 2014-03-04 Adaptmicrosys LLC Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system
US8589738B2 (en) * 2009-05-05 2013-11-19 Freescale Semiconductor, Inc. Program trace message generation for page crossing events for debug
US8438547B2 (en) * 2009-05-05 2013-05-07 Freescale Semiconductor, Inc. Address translation trace message generation for debug
US8490060B2 (en) * 2009-09-23 2013-07-16 International Business Machines Corporation Tracing memory updates and accesses for debugging computer programs
JP5310819B2 (ja) 2010-11-29 2013-10-09 株式会社デンソー マイクロコンピュータ
US9092236B1 (en) 2011-06-05 2015-07-28 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
KR20130066402A (ko) * 2011-12-12 2013-06-20 삼성전자주식회사 트레이스 데이터 저장 장치 및 방법
US8935574B2 (en) 2011-12-16 2015-01-13 Advanced Micro Devices, Inc. Correlating traces in a computing system
KR101404129B1 (ko) * 2012-06-26 2014-06-10 인텔렉추얼디스커버리 주식회사 데이터 저장 시스템 및 데이터 관리 방법
US8832500B2 (en) 2012-08-10 2014-09-09 Advanced Micro Devices, Inc. Multiple clock domain tracing
US8959398B2 (en) 2012-08-16 2015-02-17 Advanced Micro Devices, Inc. Multiple clock domain debug capability
US8856769B2 (en) 2012-10-23 2014-10-07 Yong-Kyu Jung Adaptive instruction prefetching and fetching memory system apparatus and method for microprocessor system
US9710349B2 (en) * 2013-11-05 2017-07-18 Texas Instruments Incorporated Storing first computer trace information in memory of second computer
US20160283243A1 (en) * 2015-03-28 2016-09-29 Yong-Kyu Jung Branch look-ahead instruction disassembling, assembling, and delivering system apparatus and method for microprocessor system
US10042737B2 (en) * 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10031833B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10324851B2 (en) 2016-10-20 2019-06-18 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10540250B2 (en) 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
KR20180054364A (ko) * 2016-11-15 2018-05-24 삼성전자주식회사 트레이스 데이터를 생성하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
US10296442B2 (en) 2017-06-29 2019-05-21 Microsoft Technology Licensing, Llc Distributed time-travel trace recording and replay
US10459824B2 (en) 2017-09-18 2019-10-29 Microsoft Technology Licensing, Llc Cache-based trace recording using cache coherence protocol data
US10558572B2 (en) 2018-01-16 2020-02-11 Microsoft Technology Licensing, Llc Decoupling trace data streams using cache coherence protocol data
US11907091B2 (en) 2018-02-16 2024-02-20 Microsoft Technology Licensing, Llc Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches
US10496537B2 (en) 2018-02-23 2019-12-03 Microsoft Technology Licensing, Llc Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
US10642737B2 (en) 2018-02-23 2020-05-05 Microsoft Technology Licensing, Llc Logging cache influxes by request to a higher-level cache
US10466986B2 (en) 2018-03-30 2019-11-05 Oracle International Corporation Optimized recompilation using hardware tracing
US11169810B2 (en) 2018-12-28 2021-11-09 Samsung Electronics Co., Ltd. Micro-operation cache using predictive allocation
US11288071B2 (en) 2020-05-04 2022-03-29 Morgan Stanley Services Group Inc. System and method for prefetching instructions and data
CN113821257B (zh) * 2021-09-29 2023-05-23 杭州迪普科技股份有限公司 处理器内核调用栈信息查询方法及装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3707725A (en) * 1970-06-19 1972-12-26 Ibm Program execution tracing system improvements
JPS59194245A (ja) * 1983-04-19 1984-11-05 Nec Corp マイクロプログラム制御装置
US4788683A (en) * 1986-01-14 1988-11-29 Ibm Corporation Data processing system emulation with microprocessor in place
JPH01134541A (ja) * 1987-11-20 1989-05-26 Toshiba Corp 情報処理装置
JP2678283B2 (ja) * 1988-03-15 1997-11-17 株式会社日立製作所 データ通信制御装置
JPH04148242A (ja) * 1990-10-08 1992-05-21 Fujitsu Ltd ロード・モジュール実行時トレース処理方法
US5377198A (en) * 1991-11-27 1994-12-27 Ncr Corporation (Nka At&T Global Information Solutions Company JTAG instruction error detection
DE69415600T2 (de) * 1993-07-28 1999-07-15 Koninkl Philips Electronics Nv Mikrokontroller mit hardwaremässiger Fehlerbeseitigungsunterstützung nach dem Boundary-Scanverfahren
US5964893A (en) * 1995-08-30 1999-10-12 Motorola, Inc. Data processing system for performing a trace function and method therefor
US5724505A (en) * 1996-05-15 1998-03-03 Lucent Technologies Inc. Apparatus and method for real-time program monitoring via a serial interface
GB9626367D0 (en) * 1996-12-19 1997-02-05 Sgs Thomson Microelectronics Providing an instruction trace
US5978902A (en) * 1997-04-08 1999-11-02 Advanced Micro Devices, Inc. Debug interface including operating system access of a serial/parallel debug port

Also Published As

Publication number Publication date
US6167536A (en) 2000-12-26
DE69830718T2 (de) 2006-05-18
JP2001519948A (ja) 2001-10-23
KR100546087B1 (ko) 2006-01-26
EP0974094B1 (en) 2005-06-29
WO1998045783A1 (en) 1998-10-15
DE69841339D1 (de) 2010-01-07
DE69830718D1 (de) 2005-08-04
EP0974094A1 (en) 2000-01-26

Similar Documents

Publication Publication Date Title
EP0974094B1 (en) Trace cache for a microprocessor-based device
US6009270A (en) Trace synchronization in a processor
KR100517679B1 (ko) 컴팩트한 트레이스 기록 기억장치를 포함하는 디버그 인터페이스
US6041406A (en) Parallel and serial debug port on a processor
US6175914B1 (en) Processor including a combined parallel debug and trace port and a serial port
US6185732B1 (en) Software debug port for a microprocessor
US5978902A (en) Debug interface including operating system access of a serial/parallel debug port
US6154857A (en) Microprocessor-based device incorporating a cache for capturing software performance profiling data
US6314530B1 (en) Processor having a trace access instruction to access on-chip trace memory
US6145100A (en) Debug interface including timing synchronization logic
US5724505A (en) Apparatus and method for real-time program monitoring via a serial interface
US6142683A (en) Debug interface including data steering between a processor, an input/output port, and a trace logic
US6189140B1 (en) Debug interface including logic generating handshake signals between a processor, an input/output port, and a trace logic
US6154856A (en) Debug interface including state machines for timing synchronization and communication
US6145123A (en) Trace on/off with breakpoint register
US6145122A (en) Development interface for a data processor
US5809293A (en) System and method for program execution tracing within an integrated processor
EP0567722B1 (en) System for analyzing and debugging embedded software through dynamic and interactive use of code markers
US6148381A (en) Single-port trace buffer architecture with overflow reduction
EP0391173B1 (en) Debug peripheral for microcomputers, microprocessors and core processor integrated circuits and system using the same
US6243836B1 (en) Apparatus and method for circular buffering on an on-chip discontinuity trace
EP1091298B1 (en) Interface for transferring debug information
EP0869434A2 (en) Method for outputting trace information of a microprocessor
EP1184790B1 (en) Trace cache for a microprocessor-based device
US7360117B1 (en) In-circuit emulation debugger and method of operation thereof

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101229

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee